如何设置与请求数据Django的基于类的通用CreateView的初始数据(How do I set

2019-07-03 12:30发布

我用Django的通用CreateView的对我的模型

from myproject.app.forms import PersonForm
class PersonMixin(object):
    model = Person
    form_class = PersontForm

class PersonCreateView(PersonMixin, CreateView):
    pass

这完全适用显示人的创建视图与我的自定义表单。 不过,我有,我想用一个值预填充表单字段。 我发现这个答案是: 设置初始值基于类的通用视图的ModelForm

然而,我的预填充值来自于request.user轮廓。 如何访问请求PersonCreateView并传递到窗体?

Answer 1:

在任何类的方法,您可以使用self.request获取访问请求。 所以,你的用户配置文件将与self.request.user访问。

建立你提供的链接,你将能够使用self.request.user在get_initial方法来设置值。

即。

def get_initial(self):
    return { 'value1': self.request.user }


Answer 2:

首先,你不需要使用混入那里。 只要指定的form_classPersonCreateView ; 不需要任何模型,因为你已经在其指定form_class (假设是的一个子类ModelForm )。

在哪里得到请求,基于类的观点将其保存在对象,所以你可以做内部self.request.user get_initialget_form_kwargs



文章来源: How do I set initial data on a Django class based generic createview with request data