django中,如何指定当前model为ForeignKey?
比方说,有一个员工的model, 我还想定义一个 上级领导 字段,该字段 也是一个员工,该如何声明呢?
兵库北女神
11 years, 3 months ago
Answers
这是个好问题,答案也很简单。 ;D 就是基本和指定一个ForeignKey一样。但是也需要注意几个地方,举个例子:
定义一个指向自己的ForeignKey
Class Person(model.Model): parent = models.ForeignKey('self')
你还可以指定一个related name,比如
Class Person(model.Model): parent = models.ForeignKey('self', related_name='children')
当然,您可能不想给一个Person指定parent, 这样就需要添加 null=True 和 blank=True
Class Person(model.Model): parent = models.ForeignKey('self', related_name='children', null=True, blank=True)
你可以通过以下代码查询children:
person.children
最优的方式(个人认为),使用django-mptt来优化结构,而且可以拥有一些树的功能。
from mptt.models import MPTTModel, TreeForeignKey
class Person(MPTTModel):
parent = TreeForeignKey('self', related_name='children', null=True, blank=True)
希望对你有帮助。
猪脑浆
answered 11 years, 3 months ago