我通过init方法为给定的forms.form添加了选择,如下所示:
def __init__(self, user, instance=None, *args, **kwargs):
super(ProductColorVariationsForm, self).__init__(*args, **kwargs)
self.fields["photo"].required = False
files = ()
for file in instance.files.all():
files = files + ((file.id, file.file.url),)
self.fields['photo'].choices = files
在模板中,我得到了预期的选择列表项。
但是,我无法验证表单,因为它抱怨所选的值不在可用的选择中。
打印定制小部件中的选项,得到一个空元组。
class JQSelectMenuInputWidget(Select):
template_name = "widgets/jqselectmenu.html"
def __init__(self, attrs=None, choices=(), disabled_choices=()):
super(JQSelectMenuInputWidget, self).__init__(attrs, choices=choices)
self.disabled_choices = disabled_choices
print(choices)
所以我的问题是,为什么在init方法中设置的选项没有传递给小部件类。
1条答案
按热度按时间fafcakar1#
您不是在使用小部件,而是在使用表单字段,您使用
.widget
来访问小部件:注意:从PEP-3135 [pep]开始,如果第一个参数是在其中定义方法的类,第二个是函数的第一个参数(通常是
self
),则不需要使用参数调用super(…)
。