Django将视图中的键或值发送到表单类

时间:2011-11-15 13:01:27

标签: django

我正在编写一个编辑表单,其中一些字段已包含数据。例如:

class EditForm(forms.Form):
    name = forms.CharField(label='Name', 
                           widget=forms.TextInput(), 
                           initial=Client.objects.get(pk=??????)) #how to get the id?

我为另一个表单所做的是以下内容(对于上一个EditForm的情况不起作用):

class AddressForm(forms.Form):
    address = forms.CharField(...)

    def set_id(self, c_id):
        self.c_id = c_id

    def clean_address(self):
        # i am able to use self.c_id here

views.py

form = AddressForm()
form.set_id(request.user.get_profile().id) # which works in the case of AddressForm

那么将id或值传递给表单的最佳方法是什么,并且可以在该会话/用户的所有表单中使用? 第二:使用initial来填写表单字段是否正确?我正在尝试这样做?

1 个答案:

答案 0 :(得分:0)

您需要覆盖表单的__init__方法,如下所示:

def __init__(self, *args, **kwargs):
    try:
        profile = kwargs.pop('profile')
    except KeyError:
        super(SelectForm, self).__init__(*args, **kwargs)
        return
    super(SelectForm, self).__init__(*args, **kwargs)
    self.fields['people'].queryset = profile.people().order_by('name')

显然,在需要时构建表单并传递正确的参数:)