gpt4 book ai didi

Django - 为自定义小部件指定默认属性

转载 作者:行者123 更新时间:2023-12-02 08:51:47 26 4
gpt4 key购买 nike

我创建了这个小部件

class DateTimeWidget(forms.TextInput):
attr = {'class': 'datetimepicker'}
class Media:
js = ('js/jquery-ui-timepicker-addon.js',)

然后我在我的表单上使用它

class SessionForm(forms.ModelForm):
class Meta:
model = Session
def __init__(self, *args, **kwargs):
super(SessionForm, self).__init__(*args, **kwargs)
self.fields['start_time'].widget = DateTimeWidget()
self.fields['end_time'].widget = DateTimeWidget()

没有 css class 应用于我的字段(我期望 datetimepicker 应用于 start_timeend_time).
我想我把 attr 放在了错误的位置。我应该在哪里指定它?

最佳答案

首先,html 属性存储在 widget.attrs 中,而不是 attr 中。

其次,您不能在小部件定义中声明 attrs = {'class': 'datetimepicker'},因为 __init__ 方法会覆盖 self .attrs.

相反,您可以在 __init__ 方法中设置 attrs

这是一个相当幼稚的实现。您可能需要添加一些额外的检查,以确保不会覆盖 kwargs['attrs'] 中的任何现有项目。请注意,我们已经子类化了 DateTimeInput 而不是 TextInput

class DateTimeWidget(DateTimeInput):
def __init__(self, *args, **kwargs):
kwargs['attrs'] = {'class': 'datepicker'}
super(DatePickerWidget, self).__init__(*args, **kwargs)

关于Django - 为自定义小部件指定默认属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com