Я не могу найти good способ решить эту ситуацию. У меня есть две модели Office
и People
с отношением «многие ко многим» через модель Contact
с дополнительными полями.Django Many To Many Управление с помощью встроенного набора форм
Теперь в моем views
(CreateView и UpdateView) я использую встроенный набор форм для управления отношениями.
Моя проблема здесь в том, что UpdateView
, как мне обновить многие отношения? Я могу добавить новые элементы. Но как удалить существующие? Формат генерирует флажок DELETE
, но я теряюсь в коде. Как это использовать?
Одним из способов может быть удаление всех соответствующих строк в сквозной модели и воссоздание новых данных с данными, представленными в форме, но я считаю, что должен быть более эффективный способ сделать это.
Может кто-нибудь помочь?
Вот мой текущий код:
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form_class = self.get_form_class()
form = self.get_form(form_class)
formset = OfficeContactInline(request.POST, instance=self.object)
if form.is_valid() and formset.is_valid():
self.object = form.save()
contacts = formset.save(commit=False)
for contact in contacts:
contact.office = self.object
contact.save()
formset.save_m2m()
return HttpResponseRedirect(self.get_success_url())
else:
return render(request, self.template_name, self.get_context_data(form=form, formset=formset))