最初に、別の方法がある場合に備えて、達成しようとしていることを説明します。
マルチセレクトインターフェイスのいずれかを使用して、M2M関係の両側を編集できるようにしたい(必要に応じて通常のページでも可能ですが、管理ページで編集できるようにすることをお勧めします)。
メインサイド(関係が定義されている)は自動的にうまく機能するため、問題は明らかに裏側にあります。
インラインを表示するためにここでいくつかのアドバイスを試しましたが、それは機能しますが、あまり良いインターフェースではありません。
djangoメーリングリストで得たアドバイスは、カスタムModelFormを使用することでした。複数選択ボックスを表示することはできますが、何も選択された状態で開始されず、加えられた変更が保存されないため、何にも「接続」されていないようです。
適切なコードスニペットは次のとおりです。
#models.py
class Tag(models.Model):
name = models.CharField(max_length=200)
class Project(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
tags = models.ManyToManyField(Tag, related_name='projects')
#admin.py
class TagForm(ModelForm):
fields = ('name', 'projects')
projects = ModelMultipleChoiceField(Project.objects.all(), widget=SelectMultiple())
class Meta:
model = Tag
class TagAdmin(admin.ModelAdmin):
fields = ('name', 'projects')
form = TagForm
上記のコードを機能させるか、それを行うためのより良い方法を提供することによって、どんな助けでも大歓迎です!
DavidM