我正在编写一个编辑表单,其中一些字段已包含数据。例如:
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
form = AddressForm()
form.set_id(request.user.get_profile().id) # which works in the case of AddressForm
那么将id或值传递给表单的最佳方法是什么,并且可以在该会话/用户的所有表单中使用? 第二:使用initial来填写表单字段是否正确?我正在尝试这样做?
答案 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')
显然,在需要时构建表单并传递正确的参数:)