我正在制定一项自定义要求,要求自定义选择选项属性。我的下拉列表将显示选项列表,其中一些选项应根据特定条件显示为已禁用。
我尝试通过传递Select widget attributes
来自定义disabled = disabled
。但这会禁用整个下拉列表。通过查看django 1.11.5的代码,似乎应用于Select的属性将应用于其选项。
有人可以建议如何实现这一功能吗?
谢谢
答案 0 :(得分:1)
我认为您可以对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
希望这有帮助。