9

Djangoプロジェクトでは、models.pyで次のように定義されたMPTTを使用した階層モデルがあります。

class Structure(MPTTModel):
    name = models.CharField(max_length=200, unique=True)
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
    [...]

私はFeinCMSを使用して、この階層データを管理ページに表示しています。私はadmin.pyでこのようにします:

class StructureAdmin(tree_editor.TreeEditor):
    search_fields = ('name',)

[...]

admin.site.register(Structure, StructureAdmin)

管理モデルページでは、完全に機能し、階層を確認できます。 ここに画像の説明を入力してください

編集または追加するときにも機能します。

ここに画像の説明を入力してください

私はmodels.pyに別のモデルがあります:

class Track(models.Model):
    initialStructure = models.ForeignKey(Structure , related_name='track_initialStructure')
    finalStructure = models.ForeignKey(Structure, related_name='track_finalStructure')
    [...]

ただし、この種の新しい要素を追加すると、階層は表示されません。

ここに画像の説明を入力してください

Trackの管理ビューにtree_editor.TreeEditorを使用しようとしましたが、Trackは階層的ではないため、多くのエラーが発生しますが、ForeignKeyの一部は階層的です。モデルトラックの要素を編集するときに階層を表示するにはどうすればよいですか?

どうもありがとうございます。

4

1 に答える 1

5

変更してみてください:

finalStructure = models.ForeignKey(Structure, related_name='track_finalStructure')

に:

finalStructure = TreeForeignKey(Structure, related_name='track_finalStructure')

もちろん、django-mpttTreeForeignKeyからインポートした後:

from mptt.fields import TreeForeignKey
于 2013-03-10T23:44:52.937 に答える