django-mptt вложенный выпадающий список в стандартном ModelAdmin? - PullRequest
2 голосов
/ 27 февраля 2012

Я использую 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 не работают:

В проекте нет поля с именем 'parent'

Можно ли имитировать вложенный раскрывающийся список в инструменте администрирования не MPTT?

1 Ответ

4 голосов
/ 27 февраля 2012

Вы все еще можете использовать TreeForeignKey для не-MPTTModel, предполагая, что связанной моделью является MPTTModel, то есть:

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

В качестве альтернативы, вы можете сделать поле экземпляромmptt.forms.TreeNodeChoiceField или mptt.forms.TreeNodeMultipleChoiceField в вашей форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...