gpt4 book ai didi

python - 在 Python 中将元组传递给 __init__

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:32 24 4
gpt4 key购买 nike

我有这样一个类。

class AddNoteForm(forms.Form):
def __init__(self, test_values, *args):
self.custom_choices = test_values
super(AddNoteForm, self).__init__()
self.fields['choices'] = forms.ModelMultipleChoiceField(label='Test Choices', choices=self.custom_choices)

我想在创建类时传递这个元组。

test_values = (
('name1', 'value1'),
('name2', 'value2'),
('name3', 'value3'),
)

form = AddNoteForm(test_values)

但每当我这样做时,我都会得到一个 __init__() takes at least 2 arguments (2 given) 错误。我也在使用 python 2.7(和 Django 1.8)。

我查看调试页面中的变量,self.custom_choices 包含正确的值(我传递给函数的 test_values)。

有什么想法吗?

最佳答案

ModelMultipleChoiceField 需要一个查询集作为它的第一个参数(在 self 之后)。您在这里需要的是一个常规的 MultipleChoiceField。

我还把 args/kwargs 传递给父类(super class) init,这是一个很好的做法,因为表单可以采用很多有用的参数,比如你可能想要的“initial”使用一些时间,然后当它不起作用时它会让你发疯......

class AddNoteForm(forms.Form):
def __init__(self, test_values, *args, **kwargs):
self.custom_choices = test_values
super(AddNoteForm, self).__init__(*args, **kwargs)
self.fields['choices'] = forms.MultipleChoiceField(
label='Test Choices',
choices=self.custom_choices
)

关于python - 在 Python 中将元组传递给 __init__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31601529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com