Skip to main content
 首页 » 编程设计

python之bool 字段不以 Django 形式保存

2025年05月04日36bonelee

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

这是我的 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> 

请您参考如下方法:

我不知道这是否是问题所在,但是行:

fields = ('one_time_service') 

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

fields = ('one_time_service',) 

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