Ich benutze Django 1.11. Ich versuche, einem verborgenen Feld in einem Inline-Formularsatz einen Wert hinzuzufügen. Ich habe versucht, den versteckten Feldwert an verschiedenen Punkten von def get_context_data
und def form_valid
erfolglos einzufügen. Der Code, den ich verwende, ist wie folgt:Django fügen Wert zu versteckten Feld Inline-Formularsatz
views.py
@method_decorator(login_required, name='dispatch')
class DocumentCreate(CreateView):
model = DocumentClient
success_url = reverse_lazy('documents')
form_class = DocumentForm
def get_context_data(self, **kwargs):
data = super(DocumentCreate, self).get_context_data(**kwargs)
if self.request.POST:
data['docform'] = DocumentFormSet(self.request.POST, self.request.FILES)
else:
data['docform'] = DocumentFormSet()
return data
def form_valid(self, form):
context = self.get_context_data()
docform = context['docform']
if docform.is_valid():
self.object = form.save()
docform.instance = self.object
docform.save()
return HttpResponseRedirect('documents')
else:
return self.render_to_response(self.get_context_data(form=form))
forms.py
class DocumentForm(ModelForm):
class Meta:
model = DocumentClient
exclude =()
widgets = {
'cnum': HiddenInput(),
}
def __init__(self, *args, **kwargs):
super(DocumentForm, self).__init__(*args, **kwargs)
for field in self.fields:
self.fields['cnum'].required = False
class DocumentDetailForm(ModelForm):
class Meta:
model = DocumentDetail
exclude =()
widgets = {
'document_date': DateInput(),
}
def __init__(self, *args, **kwargs):
super(DocumentDetailForm, self).__init__(*args, **kwargs)
self.fields['document_description'].required = False
DocumentFormSet = inlineformset_factory(DocumentClient, DocumentDetail, form=DocumentDetailForm, extra=10, can_delete=False)
Das versteckte Feld 'cnum'
ist das, was ich versuche, einen Wert einzufügen, für die Aufnahme in das Model. Kann jemand eine Anleitung geben, wie man das erreichen kann? Jede Hilfe wird dankbar geschätzt!
Brilliant danke! Ich habe deine def form_valid (self, form): Methode benutzt. – cr1