Django模式中的外键

2024-06-24 13:33:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我的情况是:SubCategoryTopic的外键,Topic有{}的外键。在

class SubCategory(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(max_length=110)
    description = models.TextField(default='')
    ordering = models.PositiveIntegerField(default=1)
    category = models.ForeignKey(Category)
    created_on = models.DateTimeField(auto_now_add=True)
    created_by = models.ForeignKey(User)
    updated_on = models.DateTimeField(blank=True, null=True)
    updated_by = models.ForeignKey(User, related_name='+')
    num_topics = models.IntegerField(default=0)
    num_posts = models.IntegerField(default=0)
    last_topic = models.ForeignKey(Topic, related_name='+')


class Topic(models.Model):
    name = models.CharField(max_length=300)
    slug = models.SlugField(max_length=300)
    description = models.TextField(default='')
    subcategory = models.ForeignKey(SubCategory)
    created_on = models.DateTimeField(auto_now_add=True)
    created_by = models.ForeignKey(User)
    updated_on = models.DateTimeField(blank=True, null=True)
    updated_by = models.ForeignKey(User, related_name='+')

运行此代码时,会出现以下错误:

^{pr2}$

谁能告诉我怎么修理它吗?在


Tags: nametruedefaulttopicbyonmodelslength
3条回答

您的问题是主题是在子类别之后声明的,因此在定义子类别时它不可用。在

Python没有分部类声明或转发声明。但是您可以使用init方法来实现类似的功能。有关详细信息,请参见here。在

Topic放在引号中:"Topic"

last_topic = models.ForeignKey("Topic", related_name='+')

或者将Topic类放在SubCategory类之上

试着用引号将模型括起来:

class SubCategory(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(max_length=110)
    description = models.TextField(default='')
    ordering = models.PositiveIntegerField(default=1)
    category = models.ForeignKey('Category')
    created_on = models.DateTimeField(auto_now_add=True)
    created_by = models.ForeignKey('User')
    updated_on = models.DateTimeField(blank=True, null=True)
    updated_by = models.ForeignKey('User', related_name='+')
    num_topics = models.IntegerField(default=0)
    num_posts = models.IntegerField(default=0)
    last_topic = models.ForeignKey('Topic', related_name='+')


class Topic(models.Model):
    name = models.CharField(max_length=300)
    slug = models.SlugField(max_length=300)
    description = models.TextField(default='')
    subcategory = models.ForeignKey("SubCategory")
    created_on = models.DateTimeField(auto_now_add=True)
    created_by = models.ForeignKey('User')
    updated_on = models.DateTimeField(blank=True, null=True)
    updated_by = models.ForeignKey('User', related_name='+')

相关问题 更多 >