如何使用清晰的表单在一行上显示 Django SelectDateWidget

Posted

技术标签:

【中文标题】如何使用清晰的表单在一行上显示 Django SelectDateWidget【英文标题】:How to display Django SelectDateWidget on one line using crispy forms 【发布时间】:2014-07-19 05:37:03 【问题描述】:

我试图在一行上显示使用 Django SelectDateWidget 呈现的 3 个选择字段。当我使用酥脆的表格时,它们都在不同的行上。有没有办法使用布局助手来实现这一点?

谢谢!

class WineAddForm(forms.ModelForm):
hold_until = forms.DateField(widget=SelectDateWidget(years=range(1950, datetime.date.today().year+50)), required=False)
drink_before = forms.DateField(widget=SelectDateWidget(years=range(1950, datetime.date.today().year+50)), required=False)

helper = FormHelper()
helper.form_method = 'POST'
helper.form_class = 'form-horizontal'
helper.label_class = 'col-lg-2'
helper.field_class = 'col-lg-8'
helper.add_input(Submit('submit', 'Submit', css_class='btn-wine'))

helper.layout = Layout(
    'name',
    'year',
    'description',
    'country',
    'region',
    'sub_region',
    'appellation',
    'wine_type',
    'producer',
    'varietal',
    'label_pic',
    'hold_until',
    'drink_before',
)

class Meta:
    model = wine
    exclude = ('user', 'slug', 'likes')

【问题讨论】:

【参考方案1】:

将此添加到您的 SelectDateWidget 字段的布局中:

MultiWidgetField('field_name', attrs=('style': 'width: 33%; display: inline-block;'))

【讨论】:

这就是我需要的,谢谢!看起来我需要阅读有关使用 attrs 修饰符添加样式的内容。 今天真的很方便。谢谢。您是否知道我如何更改三个小部件中每一个的宽度?例如,天的宽度比月份(一月、二月等)短很多。【参考方案2】:

您可以像这样更改三个小部件的宽度:

.selectdatewidget 
    display: inline-block;


select[name$="_day"].selectdatewidget 
    width: 27%;
    color: red;

select[name$="_month"].selectdatewidget 
    width: 38%;
    color: green;

select[name$="_year"].selectdatewidget 
    width: 35%;
    color: blue;

SelectDateWidget with three differents width

【讨论】:

以上是关于如何使用清晰的表单在一行上显示 Django SelectDateWidget的主要内容,如果未能解决你的问题,请参考以下文章

我们可以格式化模型表单如何在模板上的 Django 中显示吗

我们可以格式化模型表单如何在模板上的 Django 中显示吗

在 Django 表单中访问变量

将 Django 表单资产(媒体类)与清晰表单一起使用时,页面中不包含 .js 文件

如何以酥脆的形式在日期字段上显示日期选择器日历?

在 Bootstrap Modal 中使用 django 清晰表单的 AJAX 反馈表单