【发布时间】:2015-07-23 07:39:53
【问题描述】:
这让我发疯了,希望有人能指出我改变这一点的正确方向。我的模型中有一个布尔项目,但是当我创建我的表单时,它提供了一个带有“未知”、“是”和“否”的选择选项。我认为它会默认为“True”和“False”,因此需要相应地更改它。我最初的想法是使用小部件(就像我设置 Textarea 所做的那样,但似乎找不到模型或小部件 .boolean 选项。如果有人能引导我正确,我会非常感激 :)
下面的代码以防万一,我只有 2 个月的时间来学习 Django / Python(在我的业余时间,这对 4 个月大的孩子来说并不多)所以代码可能不如有经验丰富。
提前致谢:)
型号
class Announcement(models.Model):
announcement_title = models.CharField(max_length=75, verbose_name="Announcement Title")
announcement_text = models.CharField(max_length=500, verbose_name="Announcement Text")
announcement_active = models.BooleanField(default=True, verbose_name="Announcement Active")
announcement_date = models.DateField(default=date.today, verbose_name="Announcement Date")
announcement_high = models.BooleanField(default=True, verbose_name="Announcement Alert Severity")
announcement_expiry = models.DateField(null=True, verbose_name="Announcement Expiry")
def __str__(self):
return self.announcement_text
表格
class AnnouncementForm(ModelForm):
class Meta:
model = Announcement
exclude = ('announcement_date', 'announcement_active', )
help_texts = {
'announcement_title': _('Enter a title to give the announcement.'),
'announcement_text': _('Type the announcement body in this box.'),
'announcement_expiry': _('Can specify a date to stop displaying the announcement. Can be left blank.'),
'announcement_high': _('Tick this box to indicate a red severity, un-ticked will make it yellow.'),
}
widgets = {
'announcement_title': forms.TextInput(attrs={'class': 'form-control'}),
'announcement_text': forms.Textarea(attrs={'class': 'form-control', 'cols': 80, 'rows': 10}),
'announcement_expiry': widgets.DateInput(attrs={'class' : 'datepicker'}),
}
查看
相当大,所以不确定是否需要。有需要可以发帖。
模板
<form action="/siteadmin/{{ branding.dataset }}" method="POST" class="form-horizontal">
{% csrf_token %}
{% for item in form %}
<div class="form-group">
<div class="col-sm-4 control-label">
{% if item.help_text %}
<img src="/static/images/info.png" height="20" width="20" aria-hidden="true" data-toggle="popover" title="{{ item.help_text }}"> 
{% endif %}
{{ item.label_tag }}
</div>
<div class="col-sm-7">
{{ item }}
</div>
<div class="col-sm-1">
</div>
</div>
{% endfor %}
<div class="form-group">
<div class="col-sm-11">
<input class="btn btn-primary pull-right" type="submit" value="Add" />
</div>
<div class="col-sm-1">
</div>
</div>
</form>
【问题讨论】:
-
这发生在哪个
BooleanField上?您最近是否对模型进行过更改(是否需要迁移)? -
抱歉,说得好。它的公告_high。我确实有一些我未能申请但不适用于该表的迁移。我现在已经制作并迁移了,POST 数据仍然显示 'announcement_high' u'on'
-
如果结果正确,我很乐意将其添加为答案,但我不确定.. BooleanField state 的文档“如果您想在表单中包含布尔值可以是 True 或 False(例如选中或未选中的复选框),您必须记住在创建 BooleanField 时传入 required=False。"
-
在我的模型中添加了 required=False 并运行了 makemigrations; “__init__() 得到了一个意外的关键字参数‘必需’”
-
什么版本的django?你能用你试过的代码更新你的问题吗