python - generic.edit.CreateView 分配默认值并插入数据库

标签 python django model django-class-based-views

我有以下基于类的 View ,它使用我的模型生成“创建”屏幕:

class ProjectCreateView(generic.edit.CreateView):
    model = Project
    fields = ['project_title','project_description','created_date']
    template_name = 'steps/project-detail.html'
    success_url = reverse_lazy('index')   

型号:

class Project(models.Model):
    project_title = models.CharField(max_length=200)
    project_description = models.CharField(max_length=200, default="")
    created_date = models.DateTimeField('date created')
    owner = models.ForeignKey(User)

    def __str__(self):
        return self.project_title 

现在的问题是,如果我不希望'created_date'出现在实际的表单上。相反,我希望每当按下“提交”按钮或每当将记录添加到数据库中时都会自动填充它。我怎样才能实现这个目标?

最后,是否可以默认指定 owner 字段?也就是说,我需要用创建此记录的用户的信息填充该字段。

最佳答案

所有者created_date保留在字段列表之外。然后覆盖 form_valid 并在调用 super() 之前设置表单实例上的值。

由于您要设置所有者,因此可以使用 LoginRequiredMixin以确保只有登录用户才能访问该 View 。

from datetime import datetime

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic.edit import CreateView


class ProjectCreateView(LoginRequiredMixin, CreateView):
    model = Project
    fields = ['project_title','project_description']
    template_name = 'steps/project-detail.html'
    success_url = reverse_lazy('index')

    def form_valid(self, form):
        form.instance.owner = self.request.user
        form.instance.created_date = datetime.now()
        return super(ProjectCreateView, self).form_valid(form)

关于python - generic.edit.CreateView 分配默认值并插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41000935/

相关文章:

python - Unpickling 保存的 pytorch 模型会引发 AttributeError : Can't get attribute 'Net' on <module '__main__' despite adding class definition inline

python - Django:将整个模板封装在无空间标签中?

django - 后端和前端 MVC

c++ - 如何正确使用Qt beginInsertRows

python - 如何根据元组列表过滤 pandas DataFrame?

python - 与Sublime Text一起使用时出现致命的Pylint错误

python - Paramiko 是重用 session 还是为每个 exec_command 调用打开一个新 session ?

django - 删除陈旧的ContentTypes的最干净方法?

python - Django 查询集关系

ruby-on-rails - Rails 4 扩展了构建方法