2009-06-16 45 views
0

我有一個表示一個公司的位置處的模型:通用視圖

class Position(models.Model): 
    preferred_q = ForeignKey("Qualifications", blank=True, null=True, related_name="pref") 
    base_q = ForeignKey("Qualifications", blank=True, null=True, related_name="base") 

    #[...] 

它有兩個「內的物體」,其代表最低資格,和「優選的」資格的位置。

我有一個通用視圖設置爲編輯/查看Position實例。在該頁面中,我有一個鏈接轉到其他頁面,用戶可以在其中編輯每種類型的資格。問題是我不能只傳遞限定的主鍵,因爲那個對象可能是空的(空白和空值爲True,這是設計)。相反,我想你只需要把這個位置的主鍵和像這樣的關鍵字preferred_qualificationbase_qualification在URL:

(r'^edit/preferred_qualifications/(?P<parent_id>\d{1,4})/$', some_view), 

(r'^edit/base_qualifications/(?P<parent_id>\d{1,4})/$', some_view), 

有沒有辦法做到這一點使用通用視圖,否則我將不得不做出我自己的視圖?這很簡單,就像使用常規視圖的蛋糕一樣簡單,但爲了簡單起見,我嘗試將所有可以轉換的內容移植到通用視圖。

回答

-1

documentation for the update_object generic view解釋的,如果你有ParentModel爲您的網址定義在options_dict'model'鍵值,你應該準備就緒。

+0

在這種情況下,你會編輯/更新ParentModel。我的印象(儘管從問題中可以看出,並不完全清楚)是OP想要編輯一個InnerModel的實例。 – 2009-06-16 11:32:24

0

如果您希望編輯表單適用於InnerModel的相關實例之一,但是您希望在URL中傳遞ParentModel的PK(最好我可以告訴您這就是您要求的內容,儘管它不是很清楚),你將不得不使用包裝視圖。否則,Django的通用視圖應如何神奇地知道要編輯哪個相關對象?

根據您希望以這種方式編輯的「多個模型」的相關對象屬性的一致性,您很可能只使用一個包裝視圖而不是多個包裝。很難說沒有看到更多的代碼。