我已经看过一些老问题了,但没有找到能解决我问题的答案。在
好吧,假设我有一个叫做“Project”的模型:
class Project(models.Model):
name = models.CharField(max_length=50)
parentproject = models.ForeignKey('self', related_name="parentproject_related", blank=True, null=True,
verbose_name="parent project")
... a lot more ...
所以用这个模型我可以创建项目和子项目。一个项目可以有几个子项目,这些子项目可以由parentproject
字段标识。在
在DB
中,所有项目都在一个表中:
借助两个for循环,an可以在数据模型上创建真实视图:
^{3}$现在我希望这个排序的列表显示在ChoiceField中,这样用户就可以选择适当的项目。有没有一个简单的方法来实现这一点?为了更好的可读性,最好缩进子项目的名称。在
到目前为止谢谢你!在
我大量使用mptt,我同意,如果你不需要多个层次的深度,那么最好避免它,因为它确实会带来一些限制和潜在的问题与树腐蚀。在
以下是我过去解决这个问题的方法,灵感来自mptt的tree field:
表单.py
字段.py
^{pr2}$在管理中的外观:
您应该考虑使用django-mptt项目来帮助您。它支持树状结构,因此您可以非常容易地创建项目和子项目关系。也可以在一个sql查询中获取子树,而无需遍历树。在
下面是他们关于如何创建父关系的官方示例:http://django-mptt.github.io/django-mptt/tutorial.html#set-up-your-model
相关问题 更多 >
编程相关推荐