我用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并传递到窗体?
在任何类的方法,您可以使用self.request获取访问请求。 所以,你的用户配置文件将与self.request.user访问。
建立你提供的链接,你将能够使用self.request.user在get_initial方法来设置值。
即。
def get_initial(self):
return { 'value1': self.request.user }
首先,你不需要使用混入那里。 只要指定的form_class
在PersonCreateView
; 不需要任何模型,因为你已经在其指定form_class
(假设是的一个子类ModelForm
)。
在哪里得到请求,基于类的观点将其保存在对象,所以你可以做内部self.request.user get_initial
或get_form_kwargs
。
文章来源: How do I set initial data on a Django class based generic createview with request data