【发布时间】:2012-11-27 18:15:03
【问题描述】:
我有一个带有内联表单集的表单。 我想做的是当用户登陆表单时,将他的用户信息(例如姓名)预填充到表单的内联之一中。为了能够将请求传递给内联。
我该怎么做?
我在 Django 1.4 上使用 django-extra-views 0.6
在views.py 中,我使用get_extra_form_kwargs def 来设置我的kwargs,如下所示:
class EventMemberInline(InlineFormSet):
model = EventMember
extra = 1
form_class = EventMemberForm
def get_formset_kwargs(self):
formset_kwargs = super(EventMemberInline, self).get_formset_kwargs()
formset_kwargs.update({'first_name':self.request.user.first_name, 'last_name':self.request.user.last_name})
return formset_kwargs
我这样做是为了能够将我的内联字段(初始值)绑定到我通过 kwargs 传递的内容(在这种情况下只是用户名和姓氏)
在forms.py
class EventMemberForm(ModelForm):
class Meta:
model = EventMember
def __init__(self, *args, **kwargs):
self.fields['first_name'].initial = kwargs['first_name']
self.fields['last_name'].initial = kwargs['last_name']
super(EventMemberForm, self).__init__(*args, **kwargs)
但我收到此错误:
Exception Value:
__init__() got an unexpected keyword argument 'last_name'
我正在尝试做的事情是否可能?我可以设置内联的初始值吗?
【问题讨论】:
-
我为此github.com/AndrewIngram/django-extra-views/issues/35 创建了一个问题。我会尽快把它整理好。
-
谢谢!太好了@AndrewIngram 我会同时关注 django-extra-views ;)
-
刚刚意识到内联已经给出了请求。您应该能够在您的内联中覆盖
get_extra_form_kwargs以将用户对象传递给每个表单实例。 -
@AndrewIngram 我更新了这个问题。如果你不介意偷看一眼。非常感谢。
-
0.6.0 中存在错误,请尝试 0.6.1。同样在你的例子中你有
get_formset_kwargs而不是get_extra_form_kwargs,这是一个错字吗?您的表单也会损坏,我会将“正确”代码作为答案。
标签: django django-class-based-views