2014-10-20 74 views
2

我有一個帶有單選按鈕和文本字段的表單。當我提交表單時,布爾型字段不會在記錄中創建。布爾字段應該通過單選按鈕進行更新。這裏可能是什麼問題?未保存在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> 
+0

您是否嘗試過將TRUE和FALSE而不是0和1? – Seether 2014-10-20 21:05:11

+0

是的,我已經嘗試過。它不起作用 – 2014-10-20 21:07:32

回答

1

我不知道如果這是問題,但該行:

fields = ('one_time_service') 

是錯誤的。這不是一個元素元組,它是一個包含它的字符串。添加一個逗號,使之成爲元組:

fields = ('one_time_service',) 

編輯:也是,form.save()不更新任何數據庫記錄 - 它創建一個新的!這可能是你的問題。

+0

對不起,我的問題有點不清楚。它應該創造一個新的紀錄。布爾字段是要創建的記錄中的許多字段之一。 – 2014-10-20 21:10:44

+0

我會嘗試tuple解決方案並回報 – 2014-10-20 21:13:13

+0

如果你不是引用所有的代碼,你不能指望我們發現問題... – RemcoGerlich 2014-10-20 21:14:03