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

标签 django drop-down-menu widget admin

我必须将标题属性添加到 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/

相关文章:

css - 信不信由你,Internet Explorer 的一个 css 问题

dart - 如何在 Flutter 中使卡片小部件可触摸?

python - 如何修复 Django 1.9 中的弃用警告

CSS 下拉菜单 - 悬停时不改变

python - 在 Django 中如何在更改 ListView 中显示带有子模型数据的父模型数据?

css - 子菜单显示悬停在主菜单元素上的内容

Android webview twitter timeline widget feed 不更新

android - 小部件中的 setOnClickPendingIntent 不起作用

python - django-rq Redis 客户端发送了 AUTH,但没有设置密码

python - celery.service : Failed with result 'signal'