Django Forms - 验证用户的正确方法?

时间:2010-12-16 16:01:30

标签: django django-models django-forms

我在找到答案时遇到了一些麻烦:
使用Django表单,提供当前/请求用户的正确方法是什么?

我的表单如下:

class NewProjectForm(forms.Form):

    project_name = forms.CharField(max_length=100)

    def save(self):
        project = Project(name=self.cleaned_data[project_name])
        project.status = 'Working'
        #TODO project.created_by = ???
        project.save() 
        return project

我是否需要将用户的第二个参数传递给save函数,然后从请求中获取或者?

1 个答案:

答案 0 :(得分:3)

是的,你这样做。但是,您可以通过将表单转换为ModelForm然后在视图中处理模型来节省一些时间:

class NewProjectForm(forms.ModelForm):
    class Meta:
        model = Project
        fields = ['name',]

然后在你看来:

if form.is_valid():
    new_project = form.save(commit=False)
    new_project.created_by = request.user
    new_project.save()

这样您就不必担心传递user对象了,表单本身会为您设置其他属性(对于project.status,您可以尝试{字段定义中的{1}}参数。)