Django表单集 - 空的kwargs
我正在尝试用一个额外的参数来初始化一个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)