首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型父类字段上的Django unique_together

模型父类字段上的Django unique_together
EN

Stack Overflow用户
提问于 2016-04-24 13:58:24
回答 2查看 3.6K关注 0票数 8

我想用提供GenericForeignKey字段的模型来概括我的工作流。

因此,我创建了父类GFKModel:

代码语言:javascript
复制
class GFKModel(models.Model):
    target_content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    target_id = models.PositiveIntegerField()
    target = GenericForeignKey('target_content_type', 'target_id')

然后我继承它:

代码语言:javascript
复制
class Question(GFKModel):
    author = models.ForeignKey(User)
    text = models.TextField()

    class Meta:
        unique_together = ('author', 'target_content_type', 'target_id')

我需要在'author‘、'target_content_type’和'target_id‘上添加target_content_type约束,但是由于迁移错误,我不能这样做:

代码语言:javascript
复制
qna.Question: (models.E016) 'unique_together' refers to field 'target_content_type' which is not local to model 'Question'.
HINT: This issue may be caused by multi-table inheritance.

我怎么能这么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-24 14:27:33

我错过了GFKModel作为‘抽象’类的声明:

代码语言:javascript
复制
class GFKModel(models.Model):
    target_content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    target_id = models.PositiveIntegerField()
    target = GenericForeignKey('target_content_type', 'target_id')

    class Meta:
        abstract = True

现在,它如预期的那样工作。

票数 8
EN

Stack Overflow用户

发布于 2019-12-06 11:47:37

Alex T的解适用于抽象基模型

但是,如果使用具体的基本模型,则需要together

更多关于Django中不同多态性类型的信息:

https://realpython.com/modeling-polymorphism-django-python/#concrete-base-model

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36824068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档