jquery - 如何在 Django Crisp Forms 中使用小部件
问题描述
我正在使用 Django Crispy 表单及其 FormHelper。在我的 FormHelper 类中,我希望其中一个字段应该使用小部件。使用小部件的原因是我想在其中一个字段中填充日期选择器。
使用该字段,我可以通过识别 css_class 在我的 updated_date 中填充 DatePicker。但我想给 DatePicker 一个格式和主题(attrs)。我将如何做到这一点?
表格.py
class DeviceFilterFormHelper(FormHelper):
# form_class = "form form-inline"
form_id = "Device-search-form"
form_method = "GET"
form_tag = True
html5_required = True
layout = Layout(
Div(
Div('name', css_class="col-md-6"),
Div('location', css_class="col-md-6"),
css_class='row'
),
Div(
Div('phone_number', css_class="col-md-6"),
Div(Field('updated_date', css_class="date-time-picker")),
css_class='row'
),
FormActions(
Submit("submit", ("Search"), css_class="col-md-5"),
css_class="col-8 text-right align-self-center",
),
)
下面是我想在 FormHelper 中使用的小部件及其属性。
updated_date = forms.DateInput(attrs={
'required': True,
'class': 'date-time-picker',
'data-options': '{"format":"Y-m-d H:i", "timepicker":"true"}'
}),
我只是不知道我将如何使用小部件。
解决方案
我不相信您可以在FormHelper
基于 - 的类中做到这一点,相反,我通常做的是挂钩表单__init__
类的方法,这就是我将对表单/布局/小部件等进行任何更改的地方。这些方面的东西可能对你有用:
class DeviceFilterFormHelper(FormHelper):
... # no changes to your class/code from above
class DeviceFilterForm(forms.Form):
def __init__(self, *args, **kwargs):
super(DeviceFilterForm, self).__init__(*args, **kwargs)
self.helper = DeviceFilterFormHelper(self)
self.fields['updated_date'].widget = forms.DateInput(attrs={
'required': True,
'class': 'date-time-picker',
'data-options': '{"format":"Y-m-d H:i", "timepicker":"true"}'
})
请注意,此技术与 Crispy 无关 - 您可以使用任何 Django 表单来执行此操作,无论您是否使用 Crispy 来呈现它。
推荐阅读
- c# - TPL DataFlow 未处理所有消息
- c# - 使用不同的 propertyValue 类型反序列化 json
- servicestack - ServiceStack Razor 找不到正确的视图
- c# - Swagger 页面是 404 Not Found in MVC net-core
- javascript - Angular/Regex 输入框中的空格问题?我需要限制第一个空格,然后允许用户在第一个字符后输入空格
- c - 找出套接字的传输类型
- wpf - WPF DataType 无法引用 3rd 方对象类型
- amazon-ec2 - sonarqube错误java内存不足
- python - 将 x 轴刻度标签格式化为接缝,如默认的熊猫图
- python - 在 Pandas 中计算基于过去值的乘积而不循环的值