Django如何将选项列表传递给自定义的select widg

2024-10-01 13:46:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要覆盖select widget。在

class TooltipSelectWidget(Select) :

    def __init__(self, *args, **kwargs) :
        super().__init__(*args, **kwargs)

然后我把它称为一种形式。但是我在文档中没有看到如何将选项列表传递给这个定制的小部件。在


Tags: 文档self列表initdef选项argswidget
3条回答

如果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__的代码,您可以直观地了解为什么这是解决方案:

^{pr2}$

更好的方法是在

^{3}$

相关问题 更多 >