0

多くの一般的な関係を持つことができる Django モデルがあります。これは、ジャンクション モデルを手動で作成することによって実現されます。

class ContentProjectContentItem(models.Model):
    content_project = models.ForeignKey('ContentProject')

    # Generic relations via Content Type Framework
    object_id = models.PositiveIntegerField()
    content_type = models.ForeignKey(ContentType)
    item = generic.GenericForeignKey('content_type', 'object_id') 

    class Meta:
        unique_together = ('content_project', 'object_id', 'content_type')
        app_label = "cms"

これは、ManyToManyField を介して親モデルに関連付けられています。

class ContentProject(models.Model):
    title = models.CharField(max_length=100)
    date_created = models.DateTimeField(auto_now_add=True)

    # Related content (Assets, Resources, Media, etc)
    content_items = models.ManyToManyField(ContentProjectContentItem)

私はまだ Django 管理者を使用してスキルを開発しているため、複数の ContentProjectContentItems を ContentProject に追加できるインラインを作成する方法がわかりません。を使用してみgeneric.GenericStackedInlineましたが、役に立ちませんでした:

class ContentItemInline(generic.GenericStackedInline):
    name = "content_project"
    model = ContentProjectContentItem 

class ContentProjectAdmin(MPTTModelAdmin):
    list_display = ('title' , 'date_created')
    search_fields = ('title' , 'date_created')

    inlines = [
        ContentItemInline,
    ]

標準の ManyToMany の複数選択が表示されているだけですcontent_items(これは私が期待することです)。ContentProjectAdminジャンクション テーブルの一般的な関係を認識する方法がわかりません。何かご意見は?

4

1 に答える 1

0

最終的に、フォーム要素を手動で追加するためのカスタム change_view テンプレートを実装し、このユース ケースを処理するためにフォーム保存メソッドをオーバーライドしました。

最も美しい解決策ではありませんが、それでも効果的です。

于 2012-08-02T15:20:30.360 に答える