Как видно из заголовка, когда я пытаюсь использовать UpdateView родительской модели с несколькими дочерними моделями для их обновления, вместо того, чтобы просто обновлять их, он создает новые объекты вместо их обновления.У меня не должно быть проблем с формой, моделями или чем-то еще, потому что все остальное работает, и я могу редактировать родительскую модель, но проблема, похоже, заключается в методе form_valid () моего views.py .Вот соответствующий код:
(Entrada = родительская модель, BalaMateriesPrimeres = модель с несколькими дочерними элементами)
class EntradaUpdateView(LoginRequiredMixin, UpdateView):
model = Entrada
fields = [...]
template_name_suffix = '_update'
def form_valid(self, form):
self.object = self.get_object()
form_class = self.get_form_class()
form = self.get_form(form_class)
qs = BalaMateriesPrimeres.objects.filter(num_entrada=self.get_object())
formsets = BalaMateriesPrimeresFormSet(self.request.POST, queryset=qs)
if form.is_valid():
form.save()
if formsets.is_valid():
instances = formsets.save(commit=False)
for instance in instances:
instance.instance = self.object
instance.num_entrada = Entrada.objects.get(pk=self.object.id)
instance.save()
return super(EntradaUpdateView, self).form_valid(form)
Редактировать: То, что я тоже пробовал:
Это также дублирует объекты
self.object = self.get_object()
form_class = self.get_form_class()
form = self.get_form(form_class)
qs = BalaMateriesPrimeres.objects.filter(num_entrada=self.get_object())
formsets = BalaMateriesPrimeresFormSet(self.request.POST, queryset=qs)
if form.is_valid():
form.save()
if formsets.is_valid():
instances = formsets.save(commit=False)
for instance in instances:
instance.instance = self.object
instance.num_entrada = Entrada.objects.get(pk=self.object.id)
instance.save()
Это просто ничего не сохраняет:
self.object = self.get_object()
form_class = self.get_form_class()
form = self.get_form(form_class)
qs = BalaMateriesPrimeres.objects.filter(num_entrada=self.get_object())
formsets = BalaMateriesPrimeresFormSet(self.request.POST, queryset=qs)
if form.is_valid():
form.save()
for formset in formsets:
if formsets.is_valid():
formset.instance = self.object
formset.num_entrada = self.object.id
print(formset.instance)
formset.save()
Похоже, я 'Мне не хватает части головоломки, но я не могу понять, что