gpt4 book ai didi

django - 如何使用 django-extra-views 将请求传递到内联表单集中

转载 作者:行者123 更新时间:2023-12-04 05:19:37 25 4
gpt4 key购买 nike

我有一个带有内联表单集的表单。
我想做的是当用户登陆表单时,将他的用户信息(例如姓名)预填充到表单的内联之一中。为了能够将请求传递给内联。

我怎样才能做到这一点?

我正在使用 django-extra-views 0.6在 Django 1.4 上

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

我这样做是为了尝试将我的内联字段(初始值)绑定(bind)到我通过 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'

我想要做的甚至可能吗?我可以设置内联的初始值吗?

最佳答案

django-extra-views==0.6.0 存在问题这意味着 get_extra_form_kwargs没有被要求内联,它应该在 0.6.1 中修复。

这应该有效:

class EventMemberInline(InlineFormSet):
model = EventMember
extra = 1
form_class = EventMemberForm

def get_extra_form_kwargs(self):
kwargs = super(EventMemberInline, self).get_extra_form_kwargs()
kwargs.update({
'first_name': self.request.user.first_name,
'last_name': self.request.user.last_name
})
return kwargs

...

class EventMemberForm(ModelForm):

class Meta:
model = EventMember

def __init__(self, *args, **kwargs):
initial_first_name = kwargs.pop('first_name')
initial_last_name = kwargs.pop('last_name')

super(EventMemberForm, self).__init__(*args, **kwargs)

self.fields['first_name'].initial = initial_first_name
self.fields['last_name'].initial = initial_last_name

关于django - 如何使用 django-extra-views 将请求传递到内联表单集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13799156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com