django:如何将 css 传递给 form.as_ul

标签 django django-templates django-forms

我的表格是

class Form(forms.Form):
    ability = forms.ChoiceField(widget= forms.CheckboxSelectMultiple(), choices = SKILLS, required=False)

我将其显示为 {{ Form.as_ul }}

我如何将 css ul 类传递给它?我可以在模板的某个地方做吗?不确定这是如何工作的

最佳答案

不幸的是,您必须创建一个新的小部件,但您可以使用现有 CheckboxSelectMultiple 小部件的 __init__render 函数。

向构造函数添加一个新的 ul_attrs 参数。

from django import forms    
from django.forms.util import flatatt
from django.utils.safestring import mark_safe

class MyCheckboxSelectMultiple(forms.CheckboxSelectMultiple):
def __init__(self, attrs=None, ul_attrs=None):
    self.ul_attrs = ul_attrs
    super(MyCheckboxSelectMultiple, self).__init__(attrs)

def render(self, name, value, attrs=None, choices=()):
    html = super(MyCheckboxSelectMultiple, self).render(name, value, attrs, choices)
    final_attrs = self.build_attrs(self.ul_attrs)
    return mark_safe(html.replace('<ul>','<ul%s>' % flatatt(final_attrs)))

在您的表单中只需使用这个自定义小部件:

class Form(forms.Form):
    ability = forms.ChoiceField(widget= MyCheckboxSelectMultiple(ul_attrs={"class":"fancybox"}), choices = SKILLS,    required=False)
    # 

关于django:如何将 css 传递给 form.as_ul,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448102/

相关文章:

django - 如何同时使用 safe 和 truncatechars 方法?

django 导航栏模板 - 标签

django - 将模型的实例传递给 django 表单集

python - 如何在 Django 的表单中嵌套内联表单集?

python - 属性错误: 'module' object has no attribute 'pydebug' on dreamhost after server update

django - 如何使用Docker调试Django代码?

Django {{ user }} 不会在没有通用 View 的模板中返回用户对象

python - 传递相同形式的序列? - Django

Django:如何在注释中获取对象而不仅仅是外键?

django admin fieldsets - 添加相关模型的字段