如何使用户登录def save(self, commit=True)
的{{1}}。我尝试了forms.py
,但是没有用... self.request.user
没有self
:/
有人可以帮助我吗?
答案 0 :(得分:1)
使用form_valid
函数将用户分配给变量。
class PutYourClassNameHere(generic.CreateView):
# your code here
...
def form_valid(self, form):
form.instance.user = self.request.user
return super(PutYourClassNameHere, self).form_valid(form)
答案 1 :(得分:0)
这是因为请求未传递到表单的save()方法中。因此,基本上,您应该在视图中覆盖get_form_kwargs
形式的方法,并将request
对象传递给它。
def get_form_kwargs(self):
kw = super(MyModelCreateView, self).get_form_kwargs()
kw['request'] = self.request
return kw
答案 2 :(得分:0)
您需要将请求传递给表单的save方法。尝试这样:
重写form_valid
方法以将请求传递给表单的 save 方法:
class YourView(..):
def form_valid(self, form):
form.save(commit=True, request=request)
return HttpResponseRedirect(self.get_success_url())
以您的形式:
def save(self, commit=True, request=None):
instance = super(YourFormClass, self).save(commit=False)
user = request.user
# rest of your logic
instance.save()
return instance