复选框的 Django 编程错误

Django Programming Error for checkbox

我在提交表单时一直收到此错误:

Exception Type:     ProgrammingError
Exception Value:    column "location_completed" of relation "core_dailyprogress" does not exist

我的模型是这样的:

class DailyProgress(BaseModel):
    location_completed = models.BooleanField(default=False, blank=True)

我的表格如下:

class DailyProgressForm(forms.ModelForm):
    location_completed = forms.BooleanField(required=False, initial=False)

    class Meta:
        model = DailyProgress
        fields = '__all__'
        widgets = {
          'location_completed': forms.CheckboxInput(),
        }

最后,我的模板是:

<label>{{ form.location_completed }} Location Completed</label>

您的代码看起来不错。您可能应该检查此数据库 table 是否有此列(正如错误消息所暗示的那样),或者您是否有尚未 运行 的迁移。

通常该错误表示数据库问题。您最近偶然添加了 location_completed 而没有迁移吗? Django 1.8+ 上的 Postges 存在一个奇怪的问题,有时在迁移后无法更改表。您可以从 shell 访问 location_completed 吗?

此外,我相信您可以将表单代码简化为:

class DailyProgressForm(forms.ModelForm):
    location_completed = forms.BooleanField(required=False, initial=False)

    class Meta:
        model = DailyProgress

因为 CheckboxInput 是 forms.BooleanField 的默认小部件。