我試圖讓不同的外鍵的列表,我寫了這個:Django的模型 - 獲取不同的值列表
my_ids = Entity.objects.values('foreign_key').distinct()
但我得到的只是一個UNDISTINCT的外鍵列表...我缺少什麼?
謝謝!
我試圖讓不同的外鍵的列表,我寫了這個:Django的模型 - 獲取不同的值列表
my_ids = Entity.objects.values('foreign_key').distinct()
但我得到的只是一個UNDISTINCT的外鍵列表...我缺少什麼?
謝謝!
這就是提示!這兩種解決方案不會工作100%......但我有種結合他們:)
將參數傳遞給不同的does not工作爲MySQL的數據庫(據我所知)
這一個工程,並返回只有一個目標:
Entity.objects.order_by('foreign_key').values('foreign_key').distinct()
但我還是謝謝你:)
也許你會想要去與此:
Entity.objects.order_by().values_list('foreign_key', flat=True).distinct()
錯了。在沒有order_by('foregin_key')的情況下使用時不會工作。例如在M2M(postgres,django 1.8) – andi
Entity.objects.order_by('foreign_key').distinct('foreign_key')
如果你已經有了他們作爲一個列表,然後將其轉換爲set()
得到不同的值。
是不是這種轉換爲集是一個昂貴的想法相對於內存與set()一切都會被填充內存中,因爲查詢集其尚未加載,直到其評估..這種轉換爲列表的東西也會評估查詢集? –
Entity.objects.values_list('foreign_key', flat=True).distinct().order_by()
不同的
以無序方式不起作用在SQL SELECT 列中包含在order_by()調用中使用的任何字段。這在使用 與distinct()結合使用時有時會導致意想不到的結果。如果您通過相關 模型的字段進行排序,這些字段將被添加到選定的列中,並且它們可能會使得重複行看起來不同。由於額外的 列不會出現在返回的結果中(它們僅支持 支持排序),所以它有時看起來像非返回結果是 。
同樣,如果您使用的值()查詢來限制 選擇,()在任何ORDER_BY使用的列(或默認模型 排序)仍然會被涉及的列,並可能影響唯一性 結果。
這裏的道德是,如果你使用distinct()注意相關模型的排序 。同樣,將distinct()和 values()一起使用時,在按值()調用不在 中的字段排序時要小心。
https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct
你能詳細解釋一下嗎?考慮到這個問題的投票率,這對很多人來說都是一個問題。你說這個的來源是什麼? –
我幾乎失去了我的想法。感謝您的解決方案! – Crystal
我在Postgres9.1數據庫Django == 1.5.5上遇到同樣的問題。添加order_by幫助 - 愚蠢的... – kev