Django:根据字典值进行过滤

时间:2018-08-28 18:44:34

标签: python django orm

我的Django管理员为-

User Name City Number John_Lincoln_roma_1.0 John_Lincoln_roma roma 1.0 Eddie_paul_roma_1.1 Eddie_paul_roma roma 1.1 Shin_roma_1.2 Shin_roma roma 1.2 Sinclair_madrid_1.0 Sinclair_madrid madrid 1.0 Jessie_madrid_1.1 Jessie_madrid madrid 1.1

我想应用查询,该查询应基于最大数1.2和1.1返回User,并且应该给我的记录是Shin_roma_1.2和Jessie_madrid_1.1

下面是我尝试过的代码段-

some_object.values('name').annotate(number=Max('number')).order_by()

将结果作为-

result = [{'number': u'1.2', 'name': u'Shin_roma'}, {'number': u'1.1', 'name': u'Jessie_madrid'},

print type(result) <class 'django.db.models.query.QuerySet'>

我想要一个基于过滤User中的字典值的查询或过滤器,以返回result

基本上我想根据城市和城市Shin_roma_1.2和Jessie_madrid_1.1进行分组。因此它应该向我返回按城市顺序排列的最大用户数

我尝试了类似的操作,但没有得到结果(我知道这是错误的)-

result.filter(result__number="number",result__city="city")

遍历了stackoverflow,但没有找到解决方案。

请让我知道是否有任何不清楚的地方。我希望上面的内容很清楚。

谢谢!!

1 个答案:

答案 0 :(得分:0)

我用的模特名字是'dummy'     赋予您相同的属性,我得到的结果就是您了。

obj=dummy.objects.values('user').order_by('-number','-name')[:2]
>>> obj
<QuerySet [{'user': 'Shin_roma_1.2'}, {'user': 'Jessie_madrid_1.1'}]>