2012-02-27 3 views
2

私はProjectモデルへの外部キーであるCategoryモデルのためdjango-mpttを使用しています:標準ModelAdminにdjango-mpttネストされたドロップダウン?

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管理者を設定するのは簡単です、parentカテゴリを選ぶための素敵なネストされたドロップダウンで完了:

from django.contrib import admin 
from mptt.admin import MPTTModelAdmin 
from myapp.models import Category, Project 

admin.site.register(Category, MPTTModelAdmin) 

今、私は私のProject adminに素敵なネストされたCategoryドロップダウンを含めたいが、標準admin.ModelAdminはトンが含まれていません。彼の機能およびサブクラスMPTTModelAdminが動作していないよう:

プロジェクトは、「親」

という名前のフィールドが非MPTT管理ツールで、ネストされたドロップダウンを模倣することが可能ではありませんか?あなたはまだすなわち、リンクされたモデルがMPTTModelであると仮定すると、非MPTTModelTreeForeignKeyを使用することができます

+0

タイプ「TreeForeignKeyY」があります。 – blissini

答えて

4

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

また、あなたはフィールドにフォーム上mptt.forms.TreeNodeChoiceFieldまたはmptt.forms.TreeNodeMultipleChoiceFieldのインスタンスを作ることができます。

関連する問題