抽象模型类和多个驱动类中的Django ForeignKey导致名称冲突

2024-10-01 05:04:30 发布

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

我定义了一个抽象类,它有一个ForeignKey。我有多个派生模型类,但是当我试图生成模式迁移脚本时,south向我显示了一个错误。在

class BlogEntryBase(models.Model):
    author = models.CharField(null=True, blank=True, max_length=100)
    title = models.CharField(null=True, blank=True, max_length=255)
    created_by = models.ForeignKey("main.UserProfile", verbose_name="Created By", related_name="%(class)s_set", blank=False, null=False)

class CatBlogEntry(BlogEntryBase):
    pass

class DogBlogEntry(BlogEntryBase):
    pass

错误消息:

^{pr2}$

如您所见,我已经指定了related_name参数。我想问题是在UserProfile一侧会有两个set对象,它们会以某种方式冲突?如您所见,我试图像"%(class)s"那样置换相关名称,但这还不够。我不想把外键类移到派生类中,因为可能我不得不重复视图和表单代码。 有人有什么建议吗?我的目标是干的。将这两个blog表分开,但是要用通用的模板、视图和表单代码来处理它们。在

注意:"main.UserProfile"是一个避免循环模块依赖的字符串。在


Tags: nametruemainmodels错误nulllengthmax
1条回答
网友
1楼 · 发布于 2024-10-01 05:04:30

我把我的例子简化得如此之多,以至于我实际上漏掉了错误的原因。实际上我有两个外键,总共有8条错误消息。ForeignKeys引用同一个实体,UserProfilecreated_bymodified_by。问题是我用了

related_name="%(class)s_set"

但我需要区分这两个

^{pr2}$

是这样的:

class BlogEntryBase(models.Model):
    author = models.CharField(null=True, blank=True, max_length=100)
    title = models.CharField(null=True, blank=True, max_length=255)
    created_by = models.ForeignKey("main.UserProfile", verbose_name="Created By", related_name="%(class)s_created_by_set", blank=False, null=False)
    modified_by = models.ForeignKey("main.UserProfile", verbose_name="Modified By", related_name="%(class)s_modified_by_set", blank=False, null=False)

class CatBlogEntry(BlogEntryBase):
    pass

class DogBlogEntry(BlogEntryBase):
    pass

相关问题 更多 >