2024-10-01 13:46:15 发布
网友
我需要覆盖select widget。在
class TooltipSelectWidget(Select) : def __init__(self, *args, **kwargs) : super().__init__(*args, **kwargs)
然后我把它称为一种形式。但是我在文档中没有看到如何将选项列表传递给这个定制的小部件。在
如果choix包含用于选择的元组列表,则下面的代码将执行此操作:
form.fields[name] = ChoiceField (widget = TooltipSelectWidget (attrs = attrs, choices = choix) choices = choix)
诀窍是需要重复选项列表,一次用于小部件,一次用于choicefield)
将此添加到form init:
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) CHOICES = [()] self.fields['choice_field'].choices = CHOICES
在代码中,调用超级类初始值设定项后,将选项设置如下:
class TooltipSelectWidget(Select) : def __init__(self, *args, **kwargs) : super().__init__(*args, **kwargs) self.choices = [] # List of 2-tuple values
如果您查看Select类(自定义小部件的基类)的__init__的代码,您可以直观地了解为什么这是解决方案:
Select
__init__
更好的方法是在
如果choix包含用于选择的元组列表,则下面的代码将执行此操作:
诀窍是需要重复选项列表,一次用于小部件,一次用于choicefield)
将此添加到form init:
在代码中,调用超级类初始值设定项后,将选项设置如下:
如果您查看
^{pr2}$Select
类(自定义小部件的基类)的__init__
的代码,您可以直观地了解为什么这是解决方案:更好的方法是在
^{3}$相关问题 更多 >
编程相关推荐