令人惊讶的是,我找不到一种通过查询进行分组的方法。
我有一个查询集qs
,我试图通过组some_prop.val
,考虑qs
被排除的条目,其中some_prop
是None
。
假设值是[1, 2, 3]
,那么我将是这样的结果:
{1: entries1, 2: entries2, 3: entries3}
Django ORM是否提供任何功能来对结果进行分组?
(据我所知)没有特定的Django ORM方式,但是您可以执行以下操作以按字段值分组的条目字典:
使用.values_list()
withflat=True
获取数据库中现有值的列表(如果您事先不知道它们的话)。也.distinct()
可以消除重复的值,因为我们不在乎那些值:
value_list = MyModel.objects.values_list(
'interesting_field', flat=True
).distinct()
现在遍历value_list
并填充您的字典:
group_by_value = {}
for value in value_list:
group_by_value[value] = MyModel.objects.filter(interesting_field=value)
现在,group_by_value
dictionary包含您中的不同值interesting_field
和queryset对象的值作为键,每个值都包含MyModel
with的条目interesting_field=a value from value_list
。
出于评论遗留原因,将其留在此处。
我在其中提出了一个Q&A样式示例,该示例模拟了COUNT ... GROUP BY
SQL查询。
本质上,您需要利用.order_by
进行分组和.annotate()
依靠模型的.values()
。
这是上述示例:
我们可以执行
COUNT ... GROUP BY
对Django的ORM
SQL等效查询,与使用annotate()
,values()
,order_by()
和
django.db.models
的Count
方法:让我们的模型为:
class Books(models.Model): title = models.CharField() author = models.CharField()
假设我们要计算Book表中每个独立作者有多少本书对象:
result = Books.objects.values('author') .order_by('author') .annotate(count=Count('author'))
现在结果包含一个包含两列的查询集:author和count:
author | count ------------|------- OneAuthor | 5 OtherAuthor | 2 ... | ...
字段 规则匹配 XPATH匹配 JSON提取 其他 规则匹配 添加、编辑字段时使用规则匹配可精准获取目标页面的数据 “规则”支持:(*)(通配符)、正则表达式,使用[内容](通用匹配)或捕获组(正则捕获组)将匹配的数据保存为标签,在“拼接内容”中引用[内容N]标签组成结果 [内容]和捕获组的区别:[内容]会自动转换成固定格式捕获组:(?<content>.*?) 而捕获组:(?<content>[
注:内容翻译自官网文档 Fields 除了在前一节描述的方法之外,protocol buffer编译器为在.proto文件中定义的消息的每个字段生成访问器方法集合。读取字段的方法被定义在消息类和它对应的builder上,修改值的方法仅在builder上被定义。 注意方法名称通常使用驼峰法命名,就是在.proto文件中的字段名使用带下划线的小写(应该如此)。转换工作如下: 对于名字中的每个下划线,下
本章内容为V5.1.4+版本开始支持,可以更为方便的操作模型的JSON数据字段。 这里指的JSON数据包括JSON类型以及JSON格式(但并不是JSON类型字段)的数据 我们修改下User模型类 <?php namespace app\index\model; use think\Model; class User extends Model { // 设置json类型字段 pr
JSON字段 从V5.1.4+版本开始,强化了JSON字段的操作支持。 如果你的user表有一个info字段是JSON类型的(或者说你存储的是JSON格式,但并非是要JSON字段类型),你可以使用下面的方式操作数据。 JSON数据写入 $user['name'] = 'thinkphp'; $user['info'] = [ 'email' => 'thinkphp@qq.com',
例如,endpoint 因此,如果有人将以下json发送到我的endpoint,endpoint应该接受它 但如果发送以下json,则失败,因为它不包含。
本文向大家介绍在django中实现choices字段获取对应字段值,包括了在django中实现choices字段获取对应字段值的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧~ object.get_level_display() 补充知识:在Django中显示操作数据库的语句 需要在配置中加上这个 这样执行命令的时候,就会在控制台打印相应的sql语句了 以上这篇在
我试图制作一个方法,获取封闭实例中的任何字段,对于一对2D坐标(其字段名以“X”结尾)的任何“X”组件具有整数值。 但我在编译器中得到的只是: 方法将这样使用: 我做错了什么?
null 我看到的是一般的注释 可用于排除空值。我不能使用此方法,因为我仍然希望在json中看到具有空值的空字段 可以用来排除空值和“不存在”的值。我不能使用这个,因为我仍然想看到JSON中的空字段和空字段。与相同 所以我的问题是,如果我不指定这些属性中的任何一个,我能实现我想要的吗?换句话说,如果我没有指定其中的任何一个,那么Jackson的行为是显示所有在动态意义上具有空值的字段吗?我主要关心