坚持传递和捕捉kwargs

时间:2016-09-28 09:34:55

标签: python

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 {}
    ....

0 个答案:

没有答案