Python 3.5.2
您能帮我理解参数如何传输到方法。
以防万一:这是Django,但问题似乎只是关于Python。
据我所知,从Django的文档中可以看出:如果我将form_kwargs传递给这样的formset,将会创建几个表单。在表格中,我期望在** kwargs中捕捉参数。
class MyArticleForm(ArticleForm):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user')
super(MyArticleForm, self).__init__(*args, **kwargs)
formset = ArticleFormSet(form_kwargs={'user': user})
嗯,这不起作用:
File "/home/michael/workspace/formsets/general/forms.py", line 15, in __init__
self.user = kwargs.pop('user')
KeyError: 'user'
如果我进入调试器:kwargs肯定不包含任何'user'。 args是一个空元组。
但这有效:
class MyArticleForm(ArticleForm):
def __init__(self, user=None, *args, **kwargs):
pass
这有效:
class MyArticleForm(ArticleForm):
def __init__(self, user, *args, **kwargs):
pass
好吧,我无法理解如何在使用kwargs时捕获此参数?
/////////// 稍后再加上
ArticleFormSet = formset_factory(MyArticleForm)
def formset_factory(form, formset=BaseFormSet, extra=1, can_order=False,
can_delete=False, max_num=None, validate_max=False,
min_num=None, validate_min=False):
pass
class BaseFormSet(object):
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
initial=None, error_class=ErrorList, form_kwargs=None):
...
self.form_kwargs = form_kwargs or {}
....