Django表单集 - 空的kwargs

1 投票
1 回答
969 浏览
提问于 2025-04-18 07:43

我正在尝试用一个额外的参数来初始化一个Django的表单集合(formset),这样可以把这个参数传递给表单集合里的表单。但是,当我用表单集合工厂(formset factory)来初始化这个表单集合,并把变量传给它时,Kwargs总是空的。

这是forms.py的内容:

from django.forms.formsets import BaseFormSet
from django.forms.formsets import formset_factory

class BaseCIFormSet(BaseFormSet):

    def __init__(self, *args, **kwargs):
        print kwargs
        self.grn_id = kwargs.pop('grn_id', None)
        super(BaseCIFormSet, self).__init__(*args, **kwargs)

    def _construct_forms(self):
        self.forms = []
        for i in xrange(self.total_form_count()):
            self.forms.append(self._construct_form(i, grn_id=self.grn_id))

这是Views.py的内容:

data['form-TOTAL_FORMS'] = count
data['form-INITIAL_FORMS'] = count
data['form-MAX_NUM_FORMS'] = ''

CIFormSet = formset_factory(CIForm, formset=BaseCIFormSet, extra=(count), can_delete=True)
formset = CIFormSet(data, grn_id)

我每次打印“kwargs”时,结果总是一个空的字典{},而kwargs.pop总是走到默认值。我是不是哪里做错了?

1 个回答

1

不,你不需要这样做。你传入的参数不是命名参数,所以它们被存储在*args指针里。如果你想把它们放进**kwargs字典里,你需要这样做:

formset = CIFormSet(data=data,grn_id=grn_id)

撰写回答