下面的文字来自提供
的Django文档创建递归 关系 - 与自身具有多对一关系的对象 - 使用models.ForeignKey('self')。 如果需要在尚未定义的模型上创建关系,可以使用模型的名称, 而不是模型对象本身。
有人能给我一个在Django中使用这些功能的例子吗? 感谢
答案 0 :(得分:3)
您可以使用它来创建指向此模型的其他对象的链接。
例如,如果您在网站中有许多成员且每个成员都有一个邀请者(也是成员类型),您可以执行以下操作:
class Member(Model):
inviter = models.ForeignKey(
'self',
related_name="invited_set"
)
如果你想要邀请者,你可以:
Member.objects.get(id__exact=5).inviter
如果您希望此会员邀请的所有会员使用:
Member.objects.get(id__exact=5).invited_set
答案 1 :(得分:1)
对于尚未定义的模型:
class Gallery(models.Model):
title_image = models.ForeignKey('Image')
class Image(models.Model):
part_of = models.ForeignKey(Gallery)
由于这些类相互引用,因此至少其中一个需要引用尚未定义的类。