2

モデルの外部キーであるモデルにdjango -mpttを使用しています。CategoryProject

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.TreeNodeChoiceFieldまたはmptt.forms.TreeNodeMultipleChoiceFieldフォーム上に作成することもできます。

于 2012-02-27T02:00:59.423 に答える