Unable to set formset fields in view

51 Views Asked by At

I have try to make inlineformsets and it works but I need to set field that are not displayed in formset in the corresponding view.

Model Antecedent is linked to Inclusion models with a one-to-many (FK) field (inc).

I've tried to do it in is_valid() method but it dosen't work.

I manage to set 'parent' (Inclusion) form sai_log field but not related 'childrens' (Antecedent) formsets sai_log fields.

I know that Antecedent.objects.filter(inc__pat=self.kwargs["pk"]).update(sai_log=self.request.user.username) is a correct instruction but data is not saved in database.

models.py

class Inclusion(models.Model):

    pat = models.ForeignKey('Patient',on_delete = models.CASCADE, related_name='inclusion_patient', db_column='pat')
    sai_log = models.CharField('Login de l\'utilisateur ayant fait la saisie (AUTO)', max_length=50, null=True, blank=True)

class Antecedent(models.Model):
   
    ide = models.AutoField(primary_key=True)
    inc = models.ForeignKey('Inclusion',on_delete = models.CASCADE, related_name='antecedent_inclusion', db_column='inc')
    sai_log = models.CharField('Login de l\'utilisateur ayant fait la saisie (AUTO)', max_length=50, null=True, blank=True)
    

views.py

    def form_valid(self, form):
        context = self.get_context_data()
        antecedents = context['antecedents']
        self.object = form.save(commit=False)

        if antecedents.is_valid():
            self.object.sai_log = self.request.user.username  # sai_log set in 'parent' form works     
            self.object.save()
            # self.kwargs["pk"] => pk of patient
            Antecedent.objects.filter(inc__pat=self.kwargs["pk"]).update(sai_log=self.request.user.username) # sai_log set in 'childrens' formsets doesn't works
            antecedents.instance = self.object
            antecedents.save()
        else:
            return render(self.request, self.template_name, context)

        return super(InclusionCreate, self).form_valid(form)
0

There are 0 best solutions below