我正在使用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')
使用Category
设置MPTTModelAdmin
管理员很容易,并提供了一个很好的嵌套下拉列表来挑选parent
类别:
from django.contrib import admin
from mptt.admin import MPTTModelAdmin
from myapp.models import Category, Project
admin.site.register(Category, MPTTModelAdmin)
现在,我想在我的Category
管理员中添加一个漂亮的嵌套Project
下拉列表,但标准admin.ModelAdmin
不包含此功能,并且子类MPTTModelAdmin
没有'似乎工作:
Project没有名为'parent'的字段
是否可以模仿非MPTT管理工具中的嵌套下拉列表?
答案 0 :(得分:4)
您仍然可以在非TreeForeignKey
上使用MPTTModel
,假设链接的模型是MPTTModel
,即:
class Project(models.Model):
name = models.CharField(max_length=255)
category = TreeForeignKey('Category')
或者,您可以在表单中将该字段设为mptt.forms.TreeNodeChoiceField
或mptt.forms.TreeNodeMultipleChoiceField
的实例。