ManyToManyのフィールドを持つformをsaveしても更新されない

Python 3.5.2
Django 2.0

以下のようなモデルとフォームがある。

class Event(models.Model):
    party = models.ManyToManyField(User)

class EventForm(forms.ModelForm):
    class Meta:
        model = Event

このフォームでオブジェクトを更新しようとしても結果が保存されない。

    if request.method == 'POST':
        event = get_object_or_404(Event, pk=pk)
        form = models.EventForm(request.POST, instance=event)
        if form.is_valid():
            event = form.save(commit=False)
            event.save()
            # なぜかフォームで変更した内容が反映されない

save()ではなく、save_m2m()を呼ぶ必要があるらしい。

https://stackoverflow.com/questions/5612991/saving-many-to-many-data-via-a-modelform-in-django

https://docs.djangoproject.com/en/2.0/topics/forms/modelforms/#the-save-method

追記

save_m2m()を呼ぶ必要があるのはform.save(commit=False)の時だけです。form.save()で済む場合は、ManyToManyFieldの更新も保存されます。
http://djangoproject.jp/doc/ja/1.0/topics/forms/modelforms.html

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.