django modelform没有';不渲染布尔场
我有这个模型:django modelform没有';不渲染布尔场,django,django-forms,django-templates,modelform,Django,Django Forms,Django Templates,Modelform,我有这个模型: class Event(models.Model): title = models.CharField("Event Title",max_length=250) private = models.BooleanField("Private event",default=False) category = models.ForeignKey(Category) created = models.DateTimeField(default=ti
class Event(models.Model):
title = models.CharField("Event Title",max_length=250)
private = models.BooleanField("Private event",default=False)
category = models.ForeignKey(Category)
created = models.DateTimeField(default=timezone.now')
此模型形式:
class EventForm(forms.ModelForm):
private = forms.BooleanField(label='Private event',required=False)
class Meta:
model = Event
exclude = ('created',)
在我的模板中,布尔字段不呈现。甚至当我试图用{form.as_p}显示表单时。
我已经多次删除并创建了数据库。我已经检查了权限。我已经检查了迁移。
我错过了什么 在您的forms.py中添加小部件,如下所示:
private = forms.BooleanField(widget=forms.CheckboxInput, default=False)
这可能有助于渲染布尔字段 您的
private
和title
的模型字段定义应该明确地将文本标签指定给关键字参数。我还将从exclude
更改为fields
,以查看当您列出字段集并停止在表单上定义private
时会发生什么情况。为什么不在Meta
的字段中包含private
?类似这样的内容:字段=['title',private',category']
。然后删除排除
。你能给我们看一下生成的HTML吗?@nik_m,这会有什么帮助?出于可读性的原因,我建议这样做。这就是全部。我正要把这件事发出去。显式比隐式好,对吧?我也试过了,忘了提了。没用,它确实爆炸了。当我提交表单时,我收到一个错误“字段‘private’没有默认值”。您建议我如何解决这个问题?我修复了其他字段,但是是私有的,因为它是布尔值,所以应该有一个默认值。它适用于我使用过的其他模型。因为当字段
没有默认值
参数时?@nik_m,是的,我想是--我查看了文档而不是代码,但应该意识到在这种情况下它会爆炸。@DanaeVogiatzi何时爆炸?当你提交或试图提交表单时?@Tom当我提交时