2017-06-21 71 views
2

我需要在当前用户参与下执行表单验证。我知道如何去做,但使用FBV方法。可能是这样的:django CBV:以表格形式获取当前用户

首先声明__ __的init()方法:

def __init__(self, user, *args, **kwargs): 
    self.user = user 
    super(MyFormClass, self).__init__(*args, **kwargs) 

所以现在我可以使用self.user任何验证方法。

在我可以一个视图方法后来:

if request.POST: 
    form = MyFormClass(request.user, request.POST) 

我的问题:我如何可以做同样的,但使用CBV:

目前我使用的CreateView的通用和form_class ATTR:

class MyModelCreate(CreateView): 
    model = MyModel 
    form_class = MyFormClass 

我怎样才能实例化MyFormClass与当前用户使用这种方式。

回答

0

你可以在CreateView的的form_valid方法的用户。

def form_valid(self, form): 
    user = self.request.user 
    # add your validation 

    return super(YourView, self).form_valid(form) 
+0

'form_valid'方法是为了处理一个有效的表单,我认为在这里做进一步的验证不是一个好主意。 – Alasdair