为什么我的表格总是不受约束?

时间:2012-01-16 08:31:42

标签: python django django-forms

我是Django的新手,我正在尝试在我的网站上使用django-friends。

以下是django-friends的表单:

>>> from django import forms
>>> class UserForm(forms.Form):
...     
...     def __init__(self, user=None, *args, **kwargs):
...         self.user = user
...         super(UserForm, self).__init__(*args, **kwargs)
... 
>>> f = UserForm({})
>>> f.is_bound
False

document表示“传递一个空字典会创建一个带有空数据的绑定表单”,但为什么结果未绑定(f.is_bound为False)?

非常感谢你!

2 个答案:

答案 0 :(得分:10)

你的__init__声明吞没了第一个论点。

从您的init语句中删除user=None,也许可以从kwargs中删除它。

class UserForm(forms.Form):
    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(UserForm, self).__init__(*args, **kwargs) 
        # now the form is actually receiving your first argument: args[0] == {}

答案 1 :(得分:5)

这里发生的是UserForm使用第一个参数(user)来初始化其内部状态,因此它不会将任何内容传递给forms.Form。要获得预期的行为,您可以传递一个额外的参数:

>>> f = UserForm(None, {})
>>> f.is_bound
True