Vla*_* T. 41 python django django-class-based-views
我有一个模特:
class Article(models.Model):
text = models.CharField()
author = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
如何编写基于类的视图来创建新模型实例并将author外键设置为request.user?
更新:
解决方案转到下面单独的答案.
Vla*_* T. 37
我通过重写form_valid方法解决了这个问题.这里有详细的风格来澄清事情:
class CreateArticle(CreateView):
model = Article
def form_valid(self, form):
article = form.save(commit=False)
article.author = self.request.user
#article.save() # This is redundant, see comments.
return super(CreateArticle, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
然而,我们可以缩短它(感谢dowjones123),这个案例在文档中提到.
class CreateArticle(CreateView):
model = Article
def form_valid(self, form):
form.instance.author = self.request.user
return super(CreateArticle, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
Car*_*gas 11
我只是偶然发现了这个问题,这个线程让我朝着正确的方向前进(谢谢!).基于这个Django文档页面,我们可以避免调用表单的save()方法:
class CreateArticle(LoginRequiredMixin, CreateView):
model = Article
def form_valid(self, form):
form.instance.author = self.request.user
return super(CreateArticle, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15229 次 |
| 最近记录: |