如何使用请求数据在基于Django类的通用createview上设置初始数据

rsp*_*rsp 8 django django-forms django-generic-views django-class-based-views

我在我的模型中使用了Django的通用createview

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

class PersonCreateView(PersonMixin, CreateView):
    pass
Run Code Online (Sandbox Code Playgroud)

这非常适合用我的自定义表单显示Person的创建视图.但是,我有一个字段,我希望预先填充一个值.我找到了这个答案:在基于类的通用视图中将初始值设置为modelform

但是,我预先填充的值来自request.user的配置文件.如何在PersonCreateView中访问请求并将其传递给表单?

jon*_*man 36

在任何类方法中,您都可以使用self.request访问请求.因此,您可以使用self.request.user访问您的用户个人资料.

在您提供的链接的基础上,您可以在get_initial方法中使用self.request.user来设置值.

即.

def get_initial(self):
    return { 'value1': self.request.user }
Run Code Online (Sandbox Code Playgroud)