2010-07-31 49 views
0

我是Python新手& Django。我想讓用戶創建新對象,並且讓每個對象與當前登錄的用戶相關。所以,我想我會使用通用的create_object方法 - 只是我無法弄清楚如何最好地做到這一點,所以它很簡單和安全。關聯一般創建的Django對象與用戶

這裏是我的模型:

class Book(models.Model): 
    user = models.ForeignKey(User, related_name='owner', 
     editable=False) 

    title = models.CharField(max_length=200, 
     help_text='A title for this entry') 

    author = models.CharField(max_length=200) 

這是一個非常簡單的模型 - 用戶可以輸入書名和作者,以及「用戶」字段設置爲不可編輯。創建對象時,我希望用戶字段具有當前登錄用戶的值。

我可以使用通用的create_object方法嗎?這裏最好的方法是什麼?我不想在表單中使用隱藏字段,因爲它顯然不安全。

感謝

回答

2

我覺得跟一般的看法是不可能的(我能想到的一些方法來實現這一點,但是這將是複雜得多比它的價值 - 使用的信號,全局和中間件)。您應該編寫自己的視圖,該視圖將使用ModelForm處理書籍對象創建。閱讀它herehere(Django文檔)。

另外,我想你是誤會什麼related_name參數不 - 現在,鑑於一些用戶比如你必須寫:

books = user.owner.all() 

來獲得該用戶的書單。這將是更好地要麼離開related_name不變(默認爲relatedmodelname_set,在這種情況下:user.book_set.all())或者改變它的東西更有意義,就像"books",這將讓你寫:

books = user.books.all() 

,並得到你想要的。

+0

謝謝。我不確定是否有一個簡單的方法可以做到這一點,但我只是提出一個新的看法。感謝您澄清related_name參數。 – Roger 2010-07-31 11:14:34

相關問題