model.py
class FormData(models.Model):
email = models.EmailField()
full_name = models.CharField(max_length=120)
text_area = models.CharField(max_length=250)
radio_buttons = models.CharField(max_length=25)
check_boxes = models.CharField(max_length=10)
def __unicode__(self):
return self.email
forms.py
class MyModelForm(forms.ModelForm):
class Meta:
model = FormData
fields = ['text_area','email','full_name']
widgets = {
'text_area': Textarea(attrs={'cols': 50, 'rows': 10}),
}
TYPE_CHOICES = [('s', 'small'),('m', 'medium'),('b', 'big')]
check_boxes = forms.MultipleChoiceField(choices=TYPE_CHOICES, widget=forms.CheckboxSelectMultiple())
CHOICES = [(1, 'One'),(2, 'Two'),(3, 'Three'),(4, 'Four')]
radio_buttons = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
views.py
def home(request):
title = 'Welcome'
form = MyModelForm(request.POST)
context = {"title":title,"form":form}
if form.is_valid():
instance = form.save(commit=False)
instance.save()
context = {"title":"Thank You!"}
return render(request,"home.html",context)
home.html的
<h1>{{title}}</h1>
<form method='POST' action=''>{% csrf_token %}
{{form.as_p}}
<input type="submit" value="Submit">
</form>
问题是我似乎无法理解如何保存checkboxes
和radiobuttons
中的数据。表单已成功提交,但当我查看数据库时,check_boxes
的字段为空,radio_buttons
字段显示值“False
”,而我需要我在CHOICES
列表。
答案 0 :(得分:1)
您在表单中添加了两个额外字段,这些字段在fields
中未提及。像这样改变你的形式。
class MyModelForm(forms.ModelForm):
class Meta:
model = FormData
fields = ['text_area','email','full_name', 'check_boxes', 'radio_buttons']
widgets = {
'text_area': Textarea(attrs={'cols': 50, 'rows': 10}),
}
TYPE_CHOICES = [('s', 'small'),('m', 'medium'),('b', 'big')]
check_boxes = forms.MultipleChoiceField(choices=TYPE_CHOICES, widget=forms.CheckboxSelectMultiple())
CHOICES = [(1, 'One'),(2, 'Two'),(3, 'Three'),(4, 'Four')]
radio_buttons = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())