【发布时间】:2021-08-23 02:54:30
【问题描述】:
我正在编写自定义列表过滤器,在过滤器调用内部我有一个 Django 查询集,如下所示
queryset =[qs1, qs2, qs3]
queryset 对 queryset 中的所有对象都有一个属性 Count_val = 0, UUID = (unique id)
这么说
qs1 = {uuid: 123, count_val: 0}
qs2 = {uuid: 456, count_val: 0}
qs1 = {uuid: 789, count_val: 0}
还有
我有一个字典,例如 {uuid: count_val}
示例 {123: 5, 456: 10, 789: 15 }
我想在返回查询集作为响应之前更新所有对象的查询集属性 count_values
也许注释,但我如何为每个值提取每个 uuid
queryset=queryset.annotate(count_val = Case(When(uuid_in=dictionary.keys(), then=dictionary[uuid]), field_type=Integer)) ## not correct syntax just an example
# inserting to new field is also fine
#queryset.extra(value={count_val : dictionary[uuid]})
return queryset
感谢您的帮助
【问题讨论】:
-
你从哪里弄来的字典?如果从另一个查询中,您应该能够使用一些注释来做到这一点。如果没有,你将不得不做一些丑陋的链式注释
-
不是来自查询
-
你能给我一个注释的例子,我可以通过它更新 uuid 或关于字典的新字段
-
添加了一个示例注释作为答案
标签: python django dictionary django-queryset