我有一個模型:Django的查詢使用.order_by()和.latest()
class MyModel(models.Model):
creation_date = models.DateTimeField(auto_now_add = True, editable=False)
class Meta:
get_latest_by = 'creation_date'
我曾在我看來,一個查詢做了以下內容:
instances = MyModel.objects.all().order_by('creation_date')
再後來我想要instances.latest()
,但它不會給我正確的例子,實際上它給了我第一個例子。只有當我設置ORDER_BY到-creation_date
或實際刪除從查詢中ORDER_BY並.latest()
給我正確的實例。當我使用python manage.py shell而不是在視圖中手動測試時,也會發生這種情況。
所以,我現在所做的是在模型的元我列出order_by = ['creation_date']
,而不是用在查詢中,而且作品。
我本來期望.latest()
總是返回基於(日)最新的實例(時間)字段。誰能告訴我它是否是正確的,.latest()
行爲異常,當你在查詢中使用order_by
?
非常感謝您對您出色的解釋!你已經很清楚地告訴我.latest()的工作原理以及我做錯了什麼。特別是SQL技巧是有幫助的。這在將來肯定會派上用場。 – Heyl1 2010-09-20 07:26:46
如果我只想只有1個特定的最近插入的列值,該怎麼辦?假設:select「app_mymodel」。「id」FROM 「app_mymodel」ORDER BY「app_mymodel」。「creation_date」ASC LIMIT 1,什麼是等效的Python代碼? – 2015-10-19 07:29:15