TypeError:\uuuu init\uuuuuuuu()以Django形式获取了一个意外的关键字参数&;模板集

TypeError:\uuuu init\uuuuuuuu()以Django形式获取了一个意外的关键字参数&;模板集,django,django-forms,Django,Django Forms,在下面的Django文档中,我返回了以下内容: __init__() got an unexpected keyword argument 'choices' File "/Users/emilepetrone/Envs/kishikoi/lib/python3.6/site-packages/django/utils/functional.py" in __get__ 35. res = instance.__dict__[self.name] = self.func(

在下面的Django文档中,我返回了以下内容:

__init__() got an unexpected keyword argument 'choices'


File "/Users/emilepetrone/Envs/kishikoi/lib/python3.6/site-packages/django/utils/functional.py" in __get__
  35.         res = instance.__dict__[self.name] = self.func(instance)

File "/Users/emilepetrone/Envs/kishikoi/lib/python3.6/site-packages/django/forms/formsets.py" in forms
  144.                  for i in range(self.total_form_count())]

File "/Users/emilepetrone/Envs/kishikoi/lib/python3.6/site-packages/django/forms/formsets.py" in <listcomp>
  144.                  for i in range(self.total_form_count())]

File "/Users/emilepetrone/Envs/kishikoi/lib/python3.6/site-packages/django/forms/formsets.py" in _construct_form
  182.         form = self.form(**defaults)

File "/Users/emilepetrone/Sites/kishikoi/kishikoi/transactions/forms.py" in __init__
  119.         super(SoldTransactionForm, self).__init__(*args, **kwargs)

Exception Type: TypeError at /transactions/create/sell/transactions/31tmhqsplg41jc8c/
Exception Value: __init__() got an unexpected keyword argument 'choices'
My Form&Formset-我正在使用forms.Form,因为我将使用这些字段更新Form.is\u valid()中的其他字段

解决方案

对于其他遇到此问题的人,kwargs.pop('choices')确实需要位于表单中Super()的上方。init


这解决了错误,但随后在没有将数据加载到ChoiceField的情况下提供了一个表单集。我将该字段更改为ModelChoiceField&set queryset=None(将在初始化中更改),从而解决了问题。

在调用
super
之前弹出:

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

        queryset = kwargs.pop('choices')

        super(SoldTransactionForm, self).__init__(*args, **kwargs)

        self.fields['old_transaction'].queryset = queryset

谢谢Jens,这解决了错误!+1现在“old_transaction”字段中没有queryset数据,但这是另一个问题。再次感谢您的帮助
class SoldTransactionForm(forms.Form):

    old_transaction = forms.ChoiceField()

    num_shares = forms.IntegerField(
        min_value=0
    )

    class Meta:
        fields = [
            'old_transaction',
            'num_shares',
        ]

    def __init__(self, *args, **kwargs):
        super(SoldTransactionForm, self).__init__(*args, **kwargs)
        self.fields['old_transaction'].queryset = kwargs.pop('choices')

SoldFormset = forms.formset_factory(
    SoldTransactionForm,
    formset=forms.BaseFormSet,
    extra=2
)
def __init__(self, *args, **kwargs):

        queryset = kwargs.pop('choices')

        super(SoldTransactionForm, self).__init__(*args, **kwargs)

        self.fields['old_transaction'].queryset = queryset