2015-10-17 72 views
1

在Django中使用,一個人如何給屬性字段名稱別名可用於操縱查詢集?製作一個別名屬性字段,在一個Django的queryset

背景:我有一個查詢集,其中底層模型有一個名爲「submitted_on」的自動生成時間字段。我想爲這個時間字段使用一個別名(即「日期」)。 爲什麼?因爲我將連接此查詢集與另一個(與相同基礎模型),然後order_by('-date')。不用說,後面的qset已經具有'日期'屬性(通過註釋())。

如何爲以前的查詢集製作'日期'別名?目前,我正在做的東西,我覺得是一個低效的黑客:qset1 = qset1.annotate(date=Max('submitted_on'))

我使用的Django 1.5Python 2.7版

+0

你將嘗試連接包含兩種不同類型的QuerySets? – dursk

+0

不,不是,同一類型,請閱讀我對丹尼爾答案的評論。 –

+0

編輯爲問題增加更多清晰 –

回答

0

看來qset1 = qset1.annotate(date=Max('submitted_on'))是我現在最接近的。這或者使用exclude()。如果我得到更好的解決方案,我會更新。當然,歡迎來自SO的其他專家用自己的答案參加。

0

即使你能做到這一點,也不能解決你最終的問題。您不能在來自不同模型的連接的查詢集上使用order_by;這不可能工作,因爲它是數據庫對查詢執行ORDER BY的請求。

+0

事實上,Daniel,這兩個查詢集都將從** SAME **模型中提取。我簡化了這個問題,但如果你想閱讀血淋淋的細節,請到這裏閱讀我的問題,直到第(3)步:http://stackoverflow.com/questions/33137706/tricky-django-queryset-creation- concatenation-and-sorting-issue-with-complex-fo –

+0

編輯該問題並增加了更多的清晰度 –

相關問題