我有一个带有单选按钮和文本字段的表单。当我提交表单时,不会在记录中创建布尔字段。应该通过单选按钮更新布尔字段。这可能是什么问题?
以下是我的forms.py文件的相关部分:
CHOICES = (
(1,'yes'),
(0,'no')
)
class ServiceForm(forms.ModelForm):
one_time_service = forms.ChoiceField(required = True, choices = CHOICES, widget=forms.RadioSelect())
class Meta:
model = Service
fields = ('one_time_service')
这是我的models.py one_time_service字段
one_time_service = models.BooleanField(default=False)
这是我的views.py:
def create(request):
if request.POST:
form= ServiceForm(request.POST)
if form.is_valid():
service_obj = form.save(commit=False)
service_obj.user_id = request.user.id
service_obj.save()
return render_to_response('services/service_created.html',
{'service': Service.objects.get(id=service_obj.id)})
else:
form = ServiceForm()
args= {}
args.update(csrf(request))
args['form'] = form
return render_to_response('services/create_service.html', args )
编辑:这是我的create_service.html
<form action="/services/create" method="post" enctype="multipart/form-data">{% csrf_token %}
<ul>
{{form.as_p}}
</ul>
<input type="submit" name="submit" value="Create Service">
</form>
答案 0 :(得分:1)
我不知道这是不是问题,而是行:
fields = ('one_time_service')
错了。这不是一个元素元组,它是一个带有parens的字符串。添加逗号以使其成为元组:
fields = ('one_time_service',)
编辑:同样,form.save()不会更新任何数据库记录 - 它会创建一个新记录!这可能是你的问题。