gpt4 book ai didi

django - 如何给选项标签添加属性?

转载 作者:行者123 更新时间:2023-12-03 02:59:12 24 4
gpt4 key购买 nike

我必须将标题属性添加到 ModelChoiceField 的选项中。这是我的管理代码:

class LocModelForm(forms.ModelForm):
def __init__(self,*args,**kwargs):
super(LocModelForm,self).__init__(*args,**kwargs)
self.fields['icons'] = forms.ModelChoiceField(queryset = Photo.objects.filter(galleries__title_slug = "markers"))
self.fields['icons'].widget.attrs['class'] = 'mydds'


class Meta:
model = Loc
widgets = {
'icons' : forms.Select(attrs={'id':'mydds'}),
}

class Media:
css = {
"all":("/media/css/dd.css",)
}
js=(
'/media/js/dd.js',
)

class LocAdmin(admin.ModelAdmin):
form = LocModelForm

我可以添加任何属性来选择小部件,但我不知道如何向选项标签添加属性。有什么想法吗?

最佳答案

首先,不要修改__init__中的字段,如果你想重写小部件使用Meta内部类,如果你想重写表单字段,声明它们就像正常(非模型)形式一样。

如果Select小部件不能满足您的要求,那么只需制作您自己的小部件即可。原始小部件使用 render_option获取单个选项的 HTML 表示的方法 - 创建一个子类,覆盖它,然后添加您想要的任何内容。

class MySelect(forms.Select):
def render_option(self, selected_choices, option_value, option_label):
# look at the original for something to start with
return u'<option whatever>...</option>'

class LocModelForm(forms.ModelForm):
icons = forms.ModelChoiceField(
queryset = Photo.objects.filter(galleries__title_slug = "markers"),
widget = MySelect(attrs = {'id': 'mydds'})
)

class Meta:
# ...
# note that if you override the entire field, you don't have to override
# the widget here
class Media:
# ...

关于django - 如何给选项标签添加属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6477856/

24 4 0