2015-10-09 66 views
1

如何在不使用原始SQL的情況下使用自定義連接表達式中的數據註釋Django QuerySet?使用Django中的連接表註釋QuerySet

我想翻譯的Django的ORM下面的查詢,而不必使用this question

SELECT a.*, b.name as b_name 
FROM a 
JOIN b ON ST_Within(ST_Centroid(a.geom), b.geom) 

據我所知,做這樣的事情的最佳人選吧annotate(...)函數,但文檔沒有任何關於如何將已連接表添加到已註釋的QuerySet的內容。

我的另一個想法是使用類似ManyToManyField(可能是子類)的東西,它可以使用自定義ON ...表達式爲其加入模型。

還有其他想法嗎?

回答

1

SQLAlchemy的可能是一個更好的選擇:

https://github.com/Deepwalker/aldjemy

小型封裝集成的SQLAlchemy到存在的Django項目。這個包的主要用例是構建Django ORM無法實現的複雜查詢。

https://github.com/johnpaulett/django-sabridge

Django的模型和SQLAlchemy中的表之間的橋樑。

+0

這就是我所害怕的。現在我在這個特定的查詢中使用了'raw',但是真的很喜歡Django解決方案。 SA是一個非常好的庫,但在代碼庫中添加多種訪問數據庫的方式似乎不是一件好事情...... –