reorder formset Django

0

I have a problem editing a formset that I am using to create several forms and link them to the same object.

Models

class Tallaje(models.Model):
    id = models.BigAutoField(primary_key = True)
    nombre = models.CharField(max_length = 20,unique = True)

    def __str__(self):
        return self.nombre


class Valor(models.Model):
    id = models.BigAutoField(primary_key = True)
    valor = models.CharField(max_length = 20)
    tallaje = models.ForeignKey(Tallaje, default = None, on_delete = models.CASCADE)

    def __str__(self):
        return self.valor

View

class TallajeEditar(UpdateView):
    model = Tallaje
    form_class = TallajeForm
    valorFormSet = inlineformset_factory(Tallaje, Valor, form=ValorForm, can_delete=True, can_order=True)
    template_name = 'backend/tallaje/tallaje-editar.html'
    success_url = reverse_lazy('tallajes')

    def get_context_data(self,**kwargs):
        context = super(TallajeEditar, self).get_context_data(**kwargs)
        context['grupo'] = self.request.user.groups.get().name
        if self.request.POST:
            context['form'] = self.form_class(self.request.POST, instance=self.object)
            context['formset'] = self.valorFormSet(self.request.POST, instance=self.object)
        else:
            context['form'] = self.form_class(instance=self.object)
            context['formset'] = self.valorFormSet(instance=self.object)
        return context

    def post(self, request, *args, **kwargs):
        self.object = self.get_object()
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        formset = self.valorFormSet(request.POST, instance=self.object)
        for form in formset:
            form.instance.order = form.cleaned_data['ORDER']
        if form.is_valid() and formset.is_valid():
            form.save()
            formset.save()
            return redirect('tallajes')
        else:
            return super(TallajeEditar, self).post(request, *args, **kwargs)

If, for example, I load 10 forms and delete the 6, I save the following error when saving:

  

MultiValueDictKeyError at / backend / sizes / edit-size / 1 / "'value_set-6-id'"

Is there any way to skip that error or be able to reorganize the form ids before saving so they do not give this error?

    
asked by F Delgado 11.07.2018 в 12:21
source

0 answers