我正在尝试为Django模型表单设置初始值 但是当我尝试使用views.py:
add_contact_form = newContactForm(request.POST, initial={'relation':'Customer'})
它不起作用。如果我在模型中指定默认值,它们会正常工作。
Models.py:
class contact(models.Model):
name = models.CharField(max_length=20, blank=True)
email = models.EmailField(primary_key=True)
tel = PhoneField(null=True, blank=True)
contact_relations = [
('Supplier', 'Supplier'),
('Customer', 'Customer'),
('Other', 'Other'),
]
relation = models.CharField(max_length=50, choices=contact_relations)
Forms.py:
class newContactForm(forms.ModelForm):
class Meta:
model = contact
fields = [
'name',
'email',
'tel',
'relation',
]
widgets = {
'relation': forms.RadioSelect(),
}
Views.py:
def add_contact_view(request):
add_contact_form = newContactForm(request.POST, initial={'relation':'Customer'})
if add_contact_form.is_valid():
add_contact_form.save()
else:
add_contact_form = newContactForm()
context = {
"add_contact_form":add_contact_form,
}
return render(request, 'contacts/new_contact.html', context)
答案 0 :(得分:0)
那是因为您在页面加载时未设置它们,所以正在提交表单时进行初始化。
def add_contact_view(request):
add_contact_form = newContactForm(request.POST)
if add_contact_form.is_valid():
add_contact_form.save()
else:
add_contact_form = newContactForm(initial={'relation':'Customer'})
context = {
"add_contact_form":add_contact_form,
}
return render(request, 'contacts/new_contact.html', context)