2

我将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似乎不起作用:

项目没有名为“父”的字段

是否可以在非 MPTT 管理工具中模仿嵌套下拉菜单?

4

1 回答 1

4

假设链接模型是 ,您仍然可以TreeForeignKey在非 上使用,即:MPTTModelMPTTModel

class Project(models.Model):
    name = models.CharField(max_length=255)
    category = TreeForeignKey('Category')

或者,您可以将该字段设置为表单的实例mptt.forms.TreeNodeChoiceFieldmptt.forms.TreeNodeMultipleChoiceField表单上的实例。

于 2012-02-27T02:00:59.423 回答