我有三个模型类。说图像,人物和位置。 每个位置有多个人,每个人可以拥有多个图像。 每个位置都由图像表示。
我有Image - 位置(字段)外键到位置和位置 - 图像(字段)外键到Image。 我知道这是循环的。并会抛出一个错误。什么是替代方案/可行的解决方案?
编辑:人们可以拥有多张图片。
答案 0 :(得分:1)
使用此处显示的OneToOneField
:http://docs.djangoproject.com/en/dev/ref/models/fields/#onetoonefield
另一种方法是将外键从Image
移到Location
,因为我猜你通常会从该位置抓取图像而不是相反(如果是我错了)。然后,您必须将反向关系解析为引用对象列表,而不是唯一对象。使用ForeignKey(unique=True)
也可以解决此问题。
编辑:
尝试从图像中删除所有外键引用。使用Location
到Image
中的OneToOneField。然后,使用从Person
到Image
的ForeignKey。不要将外键放在图像中。您仍然可以在给定图像的情况下访问反向关系。
答案 1 :(得分:1)
你想要这个:
class Image(models.Model):
[...]
class Location(models.Model):
image = models.ForeignKey(Image) # or use OneToOneField if every location has a unique image
[...]
class Person(models.Model):
location = models.ForeignKey(Location)
images = models.ManyToManyField(Image)
[...]