sfe*_*ell 8 python django activerecord django-models
我想拥有一个包含2个字段的模型,包括子项和父项.我怎么在django做这个?我有类似的东西
from django.db import models
class FooModel(models.Model)
parent = models.ForeignKey('self', blank=True, null=True)
children = models.ManyToOneRel('self', blank=True, null=True)
def __init__(self, *args, **kwargs):
super(FooModel, self).__init__(*args, **kwargs)
self.parent.children.add(self)
Run Code Online (Sandbox Code Playgroud)
但我不认为我应该像这样使用ManyToOneRel(特别是因为它在'空白'上给了我一个关键字错误).有什么建议?
Dan*_*man 21
ManyToOneRel 是一个内部实现类,它不适用于您的模型.
但是你觉得为什么还需要呢?正如文档中详细解释的那样,当您定义ForeignKey时,您会自动获得反向关系.因此,在您的情况下,如果您定义,parent那么您self.foomodel_set已经自动获得:并且您可以通过使用related_name参数使其更加明确:
parent = models.ForeignKey('self', blank=True, null=True, related_name='children')
Run Code Online (Sandbox Code Playgroud)
请注意,如果您计划使用树进行复杂的操作,则可能需要使用django-mptt库.
| 归档时间: |
|
| 查看次数: |
10944 次 |
| 最近记录: |