2016-06-28 41 views
0

我有一個django創建視圖,我想調用表單類的__init__,我不知道該怎麼做。Django CreateView - 如何調用窗體類__init__?

class PersonCreateView(CreateView): 
    model = Person 
    form_class = PersonForm 

在窗體類中,我做了一些邏輯來重新定義一些組合的查詢集。我的問題是,我不知道如何調用__init__方法或任何其他方法的PersonForm

預先感謝您的任何幫助。

回答

3

你不應該自己調用它。您可以覆蓋get_form_kwargs以提供額外的參數傳遞給表單實例。

class PersonCreateView(CreateView): 
    model = Person 
    form_class = PersonForm 

    def get_form_kwargs(self, *args, **kwargs): 
     form_kwargs = super(PersonCreateView, self).get_form_kwargs(*args, **kwargs) 
     form_kwargs['my_extra_queryset_param'] = get_my_extra_queryset() 
     return form_kwargs 
+0

謝謝!正是我在找的! –

0

INIT方法當對象的新實例被實例化實際上自動被類調用。

請看下面的例子:

class House(): 
    __init__(self,x,y): 
     self.x = x 
     self.y = y 
     self.z = x*y 

要調用初始化,我們只要做到以下幾點:

h = House(5,7) 

這將創建對象並自動調用初始化功能。它對django視圖的作用方式相同。

我看到丹尼爾打敗了我的答案,也許他更多的是你在找什麼。無論如何,希望這至少有一點幫助!