2012-01-11 69 views
1

有點背景...爲Django模型定製sql

我想創建一個自定義auth後端並擴展用戶模型。我使用下面的藍圖:

blog post by Scott Barnham

無論出於何種原因,ORM是產生無效的SQL。它似乎想要做一個內部連接回自己,它失敗了,因爲它找不到連接的名爲user_ptr_id的字段。

如果您爲此搜索,似乎我可能不是唯一的搜索。實際上,在上述博客文章的評論中提到了這一點。但是,我似乎無法解決它。

看來我應該能夠重寫正在生成的SQL。那是對的嗎?從我所知道的看來,我可能會用自定義對象管理器來做到這一點。正確?

但是,我似乎無法找到我想要做的一個很好的例子。我看到的每件事都想要繼承並鏈接它們。這不是我想要做的。我有點只是想說這樣的:

嘿Django!在select上,使用這個SQL語句。 etc

這可能嗎?也許我的「googlin」今天關閉了,但我似乎無法找到它。這導致我相信我在使用錯誤的術語或其他內容。

請注意:我使用Django 1.3.1使用Python 2.6.5和PostgreSQL 9.1

+1

獲得幫助的最佳方法是顯示您正在使用的代碼(模型,產生錯誤的代碼以及逐字錯誤消息) – sgallen 2012-01-12 00:50:23

回答

0

大衛,

是的,你可以通過執行一個壓倒一切的管理覆蓋模型的行爲目的。我找到Greg Allard在A Django Model Manager for Soft Deleting Records上的一個很棒的博客,它通過軟刪除運行,將字段deleted設置爲True/False,並且只顯示未刪除的對象或全部刪除的對象。我認爲你可以重寫你的對象的all()或filter()方法來獲得你想要的東西。順便說一句,每次我使用了一個指針,「ptr」在字段的名稱中都是明顯的,這是因爲類繼承。例如,class Animal():...,class Man(Animal): Man延伸或是Animal的一個子類。在數據庫中,Man表中將有一個animal_ptr_id,它用動態表的元組作爲具有ANIMAL字段和MAN字段JOINed的Man來「擴展」動物表的元組。

+0

感謝您的回覆! – 2012-01-12 15:59:26