在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中的外键添加到模型中,因此解释似乎没有意义。