Django Query using .order_by() and .latest()
我有一个模型:
1 2 3 4 5 | class MyModel(models.Model): creation_date = models.DateTimeField(auto_now_add = True, editable=False) class Meta: get_latest_by = 'creation_date' |
我的视图中有一个查询执行了以下操作:
1 | instances = MyModel.objects.all().order_by('creation_date') |
后来,我想要以东十一〔0〕号,但它没有给我正确的例子,事实上,它给了我第一个例子。只有当我将order设置为
所以我现在所做的是在模型的meta中,我列出了
我希望
I would have expected .latest() to always return the most recent instance based on a (date)(time) field.
文件说
BLCK1/
这意味着当你着火的时候,你会得到一个基于日期/时间场的最新的实例。当我用样本数据测试你的代码时,它是独立的。
And then later I wanted instances.latest(), but it would not give me the correct instance, in fact it gave me the first instance.
你误解了我的工作方式。当传说中呼唤它时The last instance in the table.当一个叫什么名字时,将返回第一个对象。您的任意组合由EDOCX1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,在这片土地上,任何一块地上的第一块地都必须归还。这是偶然的,是桌子上的老石头。
要更好地理解,一个方法就是看一下为
第1项:
1 2 3 | from django.db import connection MyModel.objects.latest() print connection.queries[-1]['sql'] |
This prints:
ZZU1
注:
Now,case 2:
1 2 | MyModel.objects.order_by('creation_date').latest() print connection.queries[-1]['sql'] |
印刷
1 2 | SELECT"app_mymodel"."id","app_mymodel"."creation_date" FROM "app_mymodel" ORDER BY"app_mymodel"."creation_date" ASC LIMIT 1 |
注:该命令已改为
另见第3项:具体说明
1 2 | MyModel.objects.latest('id') print connection.queries[-1]['sql'] |
展示
1 2 | SELECT"app_mymodel"."id","app_mymodel"."creation_date" FROM"app_mymodel" ORDER BY"app_mymodel"."id" DESC LIMIT 1 |
我猜这是一个知名的错误,在1.3之后被固定下来。
为我工作
1 | latestsetuplist = SetupTemplate.objects.order_by('-creationTime')[:10][::1] |