我是Django的新手,但是因为一天来我一直无法解决我的问题,所以我一直坚持不懈。
我必须创建具有很多字段的表单。这些字段来自不同的模型,我想一次保存它们。我想以光滑的方式显示它,以便用户体验会更好,并且不会被大量填充字段所淹没。光滑的部分不是问题。我的问题是在同一页面上的多个div中呈现多个表单。在这种情况下,我不仅要显示候选人详细信息,而且还要显示候选人详细信息表单。
在这里,我的实际代码仅适用于一种有效的表单。
形式:
class CandidateApplicationForm(ModelForm):
position = forms.ChoiceField(choices=POSITION, widget=forms.RadioSelect)
class Meta:
model = Candidate
fields = ['firstName',
'lastName',
'mailAddress',
'address',
'city',
'country',
'nationality',
'position',
]
widgets = {
'firstName': forms.TextInput(attrs={'class': 'input'}),
'lastName': forms.TextInput(attrs={'class': 'input'}),
'address': forms.TextInput(attrs={'class': 'input'}),
'city': forms.TextInput(attrs={'class': 'input'}),
'nationality': forms.TextInput(attrs={'class': 'input'}),
'Type of programme': forms.TextInput(attrs={'class': 'input'}),
}
CandidateDetailsForm(ModelForm)类:
class Meta:
model = CandidatesDetail
fields = ['birthPlace',
'birthDate',
'nationality',
]
观点 :
类RegisterCandidate:
def __init__(self):
self.method = None
def candidateapply(request):
apply = candidateregistrationform.CandidateApplicationForm()
if request.method == 'POST':
form_candidate = candidateregistrationform.CandidateApplicationForm(request.POST)
if form_candidate.is_valid():
candidate = form_candidate.save(commit=False)
candidate.save()
else:
apply = candidateregistrationform.CandidateApplicationForm()
return render(request,
'candidateapplication.html',
{'form': apply})
def candidatedetails(request):
apply = candidateregistrationform.CandidateDetailsForm()
if request.method == 'POST':
form_candidatedetails = candidateregistrationform.CandidateDetailsForm(request.POST)
if form_candidatedetails.is_valid():
candidate = form_candidatedetails.save(commit=False)
candidate.save()
else:
apply = candidateregistrationform.CandidateApplicationForm()
return render(request,
'candidateapplication.html',
{'form': apply})
和HTML:
{% csrf_token %}
{% for field in form %}
<p>
{{ field.label_tag }}<br>
{{ field }}
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
{% endfor %}
谢谢你的帮助。
就像dirkgroten所说的,yep创建了一个具有两种形式的单视图函数:
def candidatedetails(request):
candidate_application_form = candidateregistrationform.CandidateApplicationForm()
candidate_details_form = candidateregistrationform.CandidateDetailsForm()
...
return render(request,
'candidateapplication.html',
{'candidate_application_form': candidate_application_form,
'candidate_details_form', candidate_details_form})
现在您将能够呈现这些表单或特定字段
{{ candidate_application_form }}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句