首页 > 解决方案 > form_valid 在 Django 中是如何工作的?它与 save() 相比如何?

问题描述

我在这里问的文档中对此的描述似乎非常稀疏且不清楚。那么 form_valid 方法到底在做什么呢?据我了解,它是通过 POST 方法触发的,它有点像在最后一行调用 save() 。form.instance.entry_author=self.request.user 在这一行我知道我们将当前用户设置为作者,但我不明白为什么表单引用实例以及表单从哪里获得?我想它内置在表单有效函数中?

class CreateEntryView(CreateView):
        model = Entry
        template_name='entries/create_entry.html'
        fields = ['entry_title','entry_text']
    
        def form_valid(self, form):
            form.instance.entry_author=self.request.user
            return super().form_valid(form)

标签: django

解决方案


CreateView是一个通用视图,它会自动为您做一些事情,而无需您自己编写逻辑。其中一件事是创建一个表单。您指定了要使用的模型,即Entry. 基于fields,CreateView创建一个表单并使用该表单。

文档form_valid保存表单实例,设置视图的当前对象,并重定向到 get_success_url()。

如果您有任何特殊要求,您可以覆盖它。请注意,entry_author它不包含在表单中,fields因此它不会出现在表单中。这里的想法是自动设置entry_author,而不是用户在表单中选择作者。


推荐阅读