我有以下的Django模型(這裏大大簡化):訂購Django的查詢集由兩個串聯的M2M領域
class Author:
name = models.TextField()
class Editor:
name = model.TextField()
class Publication:
authors = models.ManyToManyField(Author)
editors = models.ManyToManyField(Editor)
的出版物可以有要麼作者或編輯器,但不能同時使用。我想按照字母順序排列作者和編輯統一的出版物清單。換句話說,我想通過一個虛擬領域來訂購,我們稱之爲creators
,這是作者和編輯的連接。
查詢:
Publication.objects.all().order_by('authors__name', 'editors__name')
...將聚集在一起是沒有作者,並在該組中的排序按編輯出版物,這不是我想要的。實際上,它應該使用任何作者或編輯可用於發佈和排序。
這種排序必須發生在數據庫級,結果集可能很大。
結果集很大,所以這個排序必須發生在數據庫級別。我已經添加了這個作爲我的問題的一個筆記。 :) –
爲什麼不在保存時添加一個具有排序列表名稱的附加列?無論如何,您必須在執行連接時對名稱進行排序。 – arocks
M2M領域記得嗎?無需調用save(),M2M關係列表就可以更改。 –