Антоний прав, и это еще проще, я цитирую документацию :
Еще один побочный эффект использования commit=False
наблюдается, когда ваша модель имеет отношение многие ко многим с другой моделью. Если ваша модель имеет отношение «многие ко многим» и вы указываете commit=False
при сохранении формы, Django не может сразу сохранить данные формы для отношения «многие ко многим». Это связано с тем, что невозможно сохранить данные «многие ко многим» для экземпляра до тех пор, пока этот экземпляр не появится в базе данных.
Чтобы обойти эту проблему, каждый раз, когда вы сохраняете форму, используя commit=False
, Django добавляет метод save_m2m()
в ваш подкласс ModelForm.
В соответствии с этим, если вы не сохраните форму с помощью commit=False
, метод save_m2m()
даже не существует , независимо от того, существуют отношения многие ко многим.
Верный девизу Python «просить прощения легче, чем разрешение», вы также можете сделать:
try:
form.save_m2m()
except:
pass
если вы действительно хотите.