使用选项不是true / false的Django CheckBox表单项(布尔值)

时间:2015-07-23 07:39:54

标签: django forms

这让我疯狂,希望有人可以指出我正确的方向来改变这种状况。我的模型中有一个布尔项,但是当我创建表单时,它会给出一个选项选项"未知","是"和"不"。我认为它会默认为" True"和"错误"所以需要相应地改变它。我最初的想法是使用一个Widget(就像我已经完成设置Textarea一样,但似乎无法找到模型或小部件.boolean选项。如果有人能指引我正确的话我真的欣赏它:)

下面的代码使用它,我只用了两个月的时间学习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 }}">&nbsp
        {% 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>

1 个答案:

答案 0 :(得分:0)

我不确定你的意思是没有小部件选项。您可以像为任何其他字段一样为布尔字段定义窗口小部件:在窗体定义中。

catch