我正在为一个类似于Twitter转发的应用程序开发一个功能.
在模型中Item
,我想添加一个相关的字段reposted_from
,以引用另一个Item
.我不认为我使用ForeignKey
它,因为它是相同的模型,但我使用什么呢?
通常会向自己添加一个外键:
class Item(models.Model):
parent = models.ForeignKey('self')
Run Code Online (Sandbox Code Playgroud)
您可以指定相关名称:
class Item(models.Model):
parent = models.ForeignKey('self', related_name='children')
Run Code Online (Sandbox Code Playgroud)
因为Item可能没有父级,所以不要忘记null = True和blank = True:
class Item(models.Model):
parent = models.ForeignKey('self', related_name='children', null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
然后你就可以这样查询孩子了:
item.children
Run Code Online (Sandbox Code Playgroud)
你不妨使用django-mptt并获得一些优化和额外的树特性:
from mptt.models import MPTTModel, TreeForeignKey
class Item(MPTTModel):
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
974 次 |
最近记录: |