如何在 Django 中自定义 forms.Select 选项的属性
How to customise attributes of forms.Select options in Django
我正在处理一个需要自定义 select 选项属性的自定义需求。我的下拉列表将显示选项列表,其中一些选项应根据特定条件显示为禁用。
我尝试通过传递 disabled = disabled
来自定义 Select widget attributes
。但这会禁用整个下拉菜单。通过查看 django 1.11.5 的代码,似乎 Select 上应用的属性将应用于其选项。
任何人都可以建议如何实现此功能吗?
谢谢
我认为您可以子class django.forms.widgets.Select
小部件,将新参数 disabled_choices
传递给它的 __init__
函数并覆盖 create_option
方法,例如这个:
class MySelect(Select):
def __init__(self, attrs=None, choices=(), disabled_choices=()):
super(Select, self).__init__(attrs, choices=choices)
# disabled_choices is a list of disabled values
self.disabled_choices = disabled_choices
def create_option(self, name, value, label, selected, index, subindex=None, attrs=None):
option = super(Select, self).create_option(name, value, label, selected, index, subindex, attrs)
if value in self.disabled_choices:
option['attrs']['disabled'] = True
return option
希望对您有所帮助。
我正在处理一个需要自定义 select 选项属性的自定义需求。我的下拉列表将显示选项列表,其中一些选项应根据特定条件显示为禁用。
我尝试通过传递 disabled = disabled
来自定义 Select widget attributes
。但这会禁用整个下拉菜单。通过查看 django 1.11.5 的代码,似乎 Select 上应用的属性将应用于其选项。
任何人都可以建议如何实现此功能吗?
谢谢
我认为您可以子class django.forms.widgets.Select
小部件,将新参数 disabled_choices
传递给它的 __init__
函数并覆盖 create_option
方法,例如这个:
class MySelect(Select):
def __init__(self, attrs=None, choices=(), disabled_choices=()):
super(Select, self).__init__(attrs, choices=choices)
# disabled_choices is a list of disabled values
self.disabled_choices = disabled_choices
def create_option(self, name, value, label, selected, index, subindex=None, attrs=None):
option = super(Select, self).create_option(name, value, label, selected, index, subindex, attrs)
if value in self.disabled_choices:
option['attrs']['disabled'] = True
return option
希望对您有所帮助。