【发布时间】:2010-09-17 16:02:06
【问题描述】:
我有一个模型:
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 而不是在视图中手动测试时,也会发生这种情况。
所以我现在所做的是在模型的 Meta 中,我列出了 order_by = ['creation_date'] 并且没有在查询中使用它,并且有效。
我本来希望.latest() 总是根据(日期)(时间)字段返回最新的实例。谁能告诉我当您在查询中使用order_by 时.latest() 的行为异常是否正确?
【问题讨论】:
-
只有当我将 order_by 设置为 -creation_date 或实际从查询中删除 order_by 时, .latest() 才给我正确的实例......你能解释一下这句话是什么意思吗?我不明白...
标签: python django sql-order-by