Невозможно установить поля набора форм в представлении
Я пытался сделать inlineformsets и это работает, но мне нужно установить поле, которое не отображается в formset в соответствующем представлении.
Модель Antecedent связана с моделями Inclusion с помощью поля "один ко многим" (FK) (inc).
Я пытался сделать это в методе is_valid(), но это не работает.
Мне удается установить "родительское" (Inclusion) поле sai_log формы, но не связанные с ним "дочерние" (Antecedent) поля sai_log формы.
Я знаю, что Antecedent.objects.filter(inc__pat=self.kwargs["pk"]).update(sai_log=self.request.user.username) это правильная инструкция, но данные не сохраняются в базе данных.
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)