python - django-mptt 在标准 ModelAdmin 中嵌套下拉菜单?

标签 python django mptt

我正在使用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.TreeNodeChoiceFieldmptt.forms.TreeNodeMultipleChoiceField 的实例。

关于python - django-mptt 在标准 ModelAdmin 中嵌套下拉菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9458937/

相关文章:

python - Pandas groupby : get best zscore for counts() of each group

django - 在身份验证中间件之后调用自定义中间件

django - 自定义 django-user 对象没有属性 'has_module_perms'

python - Django MPTT 排序

php - 在 CakePHP 树中查找子树

python - 错误 : object of type 'int' has no len()

python - 在 Python 版剧作家中,如何从框架 (iframe) 中检索元素的句柄?

python - Django:子查询的注解

django - 如何在每次插入后不重建的情况下构建 django-mptt 树?

python - .NET Core 2.0 和 Angular 初始应用程序构建失败 - 找不到 python 后跟 JavaScript 运行时错误