2011-12-22 75 views
0

我有用戶在我的網站中創建列表,我使用通用的CreateView來允許他們創建它們。列表中的一個字段是所有者(誰創建它)。Django:將字段添加到CreateVView.form_valid中的ModelForm

要求用戶選擇所有者是沒有意義的,因爲創建它的用戶已經是所有者。

所以,我傳遞給CreateView一個「form_class」而不是「model」參數,其中form_class排除了所有者字段。

爲了保存表格,我需要將所有者添加到它。

我subclassed CreateView並添加一個form_valid方法,但我遇到問題做這個。

到目前爲止,我

class MyCreateView(CreateView) 
    form_class = ListForm 

def form_valid(self, form): 
    form.??? = self.request.user -->> expression of the left side 
    return super(MyCreateView, self).form_valid(form) 

它應該是簡單的東西。在this thread中,他們說使用self.object.owner,但self.object是None類型。

我該如何處理? 感謝

回答

1

您正在尋找form.instance.owner = request.user,然後調用超

+0

我使用PDB的form_valid被稱爲之後。 self.instance返回「DoesNotExist」並且self.instance返回AttributeError:'MyCreateView'對象沒有屬性'instance'。 ListForm也是一個ModelForm – duduklein 2011-12-22 14:23:13

+0

我添加了form.instance = MyModel(),然後form.instance.owner = self.request.user。這個apprently工作,但是當模型保存到數據庫時,顯示的表單中的所有字段都是空的。 – duduklein 2011-12-22 14:43:12

+0

我誤解了你的帖子。更新我的回答 – ojii 2011-12-22 18:40:22

相關問題