私は2つのモデルを持っています:
class Actor(models.Model):
name = models.CharField(max_length=30, unique = True)
event = models.ManyToManyField(Event, blank=True, null=True)
class Event(models.Model):
name = models.CharField(max_length=30, unique = True)
long_description = models.TextField(blank=True, null=True)
前の質問: Django form linking 2 models by many to many fieldで、保存機能を使用して EventForm を作成しました。
class EventForm(forms.ModelForm):
class Meta:
model = Event
def save(self, commit=True):
instance = forms.ModelForm.save(self)
instance.actors_set.clear()
for actor in self.cleaned_data['actors']:
instance.actors_set.add(actors)
return instance
これにより、定義された m2m 接続の反対側から m2m リンクを追加することができました。
次に、エントリを編集します。私はジェネリック関数を使用しています:
def generic_edit(request, modelname, object_id):
modelname = modelname.lower()
form_class = form_dict[modelname]
return update_object(request,
form_class = form_class,
object_id = object_id,
template_name = 'createdit.html'
)
ただし、これは、このオブジェクトに保存された多対多の選択を除くすべての情報を取り込みます。
これと似たようなことをする必要があると思います: Admin Page で M2M の両側を編集する、しかし私はそれを理解していません。
汎用 update_object を使用して多対多リンクの反対側を編集するにはどうすればよいですか?