2017-06-21 66 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