在django中使用checkbox输入的BooleanField将无法正常工作

时间:2015-06-10 09:05:35

标签: django sqlite django-forms

我有以下模型,其中包含布尔字段

class Prb(models.Model):
    #other fields
    disabled = models.BooleanField(default=False)

和模型的模型

class PrbModelForm(ModelForm):

    class Meta:
        model=Prb

在我看来,我使用prb作为实例

渲染prbmodelform
prb = get_object_or_404(Prb, pk=4)
prb_model_form = PrbModelForm(request.POST or None, instance=prb)
此模型的

prb.disabled字段为0(使用SQLite数据库) 但是当我渲染表格时虽然禁用了字段为0复选框被选中。我怎么解决这个问题?我想在此添加disabled是一个SQLite布尔字段,并且使用inspectdb将数据模式转换为模型。为什么不正确呈现复选框状态?

编辑:查询按照应有的方式工作,就在我这样做的时候

Prb.objects.filter(disabled=True)

它会返回正确的prb。全部禁用等于1。

编辑#2:视图中prb.disabled的值为0

表格渲染如下(仅提供复选框字段)

<input checked="checked" id="id_disabled" name="disabled" type="checkbox" value="0">

1 个答案:

答案 0 :(得分:0)

仅供其他人知道......问题出在SQLite上。事实证明,当用户没有将字段设置为非null时,Django必须使用NullBooleanField而不是普通的BooleanField。从BooleanField迁移到NullBooleanField(同意数据库),然后迁移回BooleanField以更改db的架构。我希望从orm和django完成所有事情,这就是我走了很长路的原因(即使用迁移而不是仅使用sqlite命令行中的sql来改变字段)

谢谢大家...