我正在使用django-mptt对于 Category
模型,它是 Project
模型的外键:
from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
class Category(MPTTModel):
name = models.CharField(max_length=255)
parent = TreeForeignKeyY('self',
null=True,
blank=True,
related_name='children'
)
class Project(models.Model):
name = models.CharField(max_length=255)
category = models.ForeignKey('Category')
使用MPTTModelAdmin
可以轻松设置Category
管理,并配有一个漂亮的嵌套下拉菜单,用于选择父
类别:
from django.contrib import admin
from mptt.admin import MPTTModelAdmin
from myapp.models import Category, Project
admin.site.register(Category, MPTTModelAdmin)
现在我想在我的 Project
管理中包含一个漂亮的嵌套 Category
下拉列表,但标准 admin.ModelAdmin
不包括此功能和子类 MPTTModelAdmin
似乎不起作用:
Project has no field named 'parent'
是否可以模仿非 MPTT 管理工具中的嵌套下拉菜单?
最佳答案
您仍然可以在非 MPTTModel
上使用 TreeForeignKey
,假设链接模型是 MPTTModel
,即:
class Project(models.Model):
name = models.CharField(max_length=255)
category = TreeForeignKey('Category')
或者,您可以将该字段设为表单上的 mptt.forms.TreeNodeChoiceField
或 mptt.forms.TreeNodeMultipleChoiceField
的实例。
关于python - django-mptt 在标准 ModelAdmin 中嵌套下拉菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9458937/