我有一個模型(補丁)它有一個作者字段,我需要生成幾個報告,總是過濾出作者不包含字符串'@ example.com'的行。鑑於補丁是在一個單獨的django應用程序中定義的,我不想更改,我的想法是創建一個DB視圖(例如,ExampleComPatch,使用非託管模型類訪問),可以過濾掉所有行我不感興趣,然後將報告方法放在新模型類下。如何將所有字段定義從一個模型類複製到另一個模型類?
爲了避免代碼重複,我讓我的新模型類從Patch繼承。這工作正常,只有一對夫婦的注意事項:
- 我認爲需要有一個額外的「patch_ptr_id」一個在補丁中定義的所有列加,因爲Django的認爲我想真正的繼承在DB以及
- 由於這是一個非管理模型類,使用該視圖中的測試需要創建手動
然而,由於Django的認爲我想真正的繼承,每當我刪除補丁的一個實例,它結束了貫通進入其所有子對象(例如,連接到它的ExampleComPatch中的行),這意味着與ExampleComPatch無關的測試現在可以是n如果需要從修補程序表中刪除()行,則需要手動創建數據庫視圖。我想繼承可能不是最好的選擇,但我真的想避免代碼重複,所以我想知道是否有辦法將所有字段定義從Patch複製到ExampleComPatch。或者,甚至可能採用完全不同的方法,使我可以使用數據庫視圖(以降低報告方法的複雜性)和在補丁之外定義的報告方法,因爲它們在那裏沒有多大意義。
這正是我想要的;不能相信我沒有注意到關於繼承的文檔。謝謝! – 2011-05-10 21:18:00