我有一个模型: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