我需要覆盖选择小部件。
class TooltipSelectWidget(Select) :
def __init__(self, *args, **kwargs) :
super().__init__(*args, **kwargs)
然后我以一种形式来称呼它。但是我在文档中看不到如何将选择列表传递给该自定义小部件。
答案 0 :(得分:0)
如果choix包含可供选择的元组列表,那么下面的代码就可以完成工作:
form.fields[name] = ChoiceField (widget = TooltipSelectWidget (attrs = attrs, choices = choix) choices = choix)
诀窍在于,需要重复选择列表,一次是对小部件,一次是对choicefield)
答案 1 :(得分:0)
将此添加到表单init:
update table_name
set userid=5
where name = 'xyz';
update table_name
set userid=6
where name = 'abc';
答案 2 :(得分:0)
在您的代码中,调用超类初始化程序后,将选择设置如下:
class TooltipSelectWidget(Select) :
def __init__(self, *args, **kwargs) :
super().__init__(*args, **kwargs)
self.choices = [] # List of 2-tuple values
如果您查看__init__
类(自定义窗口小部件的基类)的Select
的代码,则可以直观地了解为什么这是解决方案:
class Select(Widget):
allow_multiple_selected = False
def __init__(self, attrs=None, choices=()):
super(Select, self).__init__(attrs)
# choices can be any iterable, but we may need to render this widget
# multiple times. Thus, collapse it into a list so it can be consumed
# more than once.
self.choices = list(choices)
一种更好的方法是默认情况下在
中包含您的自定义选项class TooltipSelectWidget(Select) :
CUSTOM_CHOICES = () # Modify at will.
def __init__(self, attrs=None, choices=CUSTOM_CHOICES) :
super().__init__(attrs=attrs, choices=choices)