2011-10-29 74 views
3

文本是从Django文档,其提供在Django中,递归关系和未定义模型的关系有什么用?下面

要创建一个递归 关系 - 其具有与自身多到一的关系的对象 - 使用models.ForeignKey(”自我”)。 如果您需要在尚未定义的模型上创建关系,则可以使用模型的名称 而不是模型对象本身。

有人可以给我一个在Django中使用这些功能的例子吗? 谢谢

回答

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

对于型号尚未德被罚款:

class Gallery(models.Model): 
    title_image = models.ForeignKey('Image') 

class Image(models.Model): 
    part_of = models.ForeignKey(Gallery) 

由于这些类彼此相互引用,至少其中一个需要引用尚未定义的类。