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)