不以Django格式保存的布尔字段

时间:2014-10-20 21:00:26

标签: python django

我有一个带有单选按钮和文本字段的表单。当我提交表单时,不会在记录中创建布尔字段。应该通过单选按钮更新布尔字段。这可能是什么问题?

以下是我的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>

1 个答案:

答案 0 :(得分:1)

我不知道这是不是问题,而是行:

fields = ('one_time_service')

错了。这不是一个元素元组,它是一个带有parens的字符串。添加逗号以使其成为元组:

fields = ('one_time_service',)

编辑:同样,form.save()不会更新任何数据库记录 - 它会创建一个新记录!这可能是你的问题。