对于django中引用的表,给定的键没有唯一约束匹配

时间:2017-12-03 02:07:00

标签: python django

在SO上有很多与此错误相关的问题,但要么我理解它们中的每一个都不正确,要么它们不适用于这种情况。

我在photo/models.py中有以下代码。

class Photo(EmptyModelBase):
    # there's a lot of fields in this model.

以下points/models.py

class Label(EmptyModelBase):
    photo = models.ForeignKey(Photo, related_name='labels')

考虑到这一点,我理解这意味着Photo模型拥有唯一键,因为Label可以有photo字段,其中包含Photo的外键模型。

所以,接下来我想向points/models.py添加另一个模型,该模型还包含Photos

的外键
class Material(EmptyModelBase):   
    photo = models.ForeignKey(Photo, related_name='material')

尝试将这些更改添加到数据库时,出现以下错误:

django.db.utils.ProgrammingError: there is no unique constraint matching given keys for referenced table "photos_photo"

我虽然这个错误意味着Photo模型没有唯一约束,即Photo模型中的条目不一定是唯一的,因此外键可能不知道使用哪个条目。但是,我可以将Label中的外键添加到模型中,因此解释似乎没有意义。

1 个答案:

答案 0 :(得分:-2)

使用django.db.models.Model扩展你的模型,然后它会有一些独特的字段,比如id。

请参阅文档here