zyk*_*yks 10 python django django-queryset django-annotate
我正在尝试使用django注释来创建queryset字段,该字段是一些相关模型属性的值列表.
queryset = ...
qs = queryset.annotate(
list_field=SomeAggregateFunction(
Case(When(related_model__field="abc"), then="related_model__id")
),
list_elements=Count(F('list_field'))
)
Run Code Online (Sandbox Code Playgroud)
我正在考虑将所有这些id与一些分隔符连接起来,但我不知道相应的函数.另一个解决方案是使list_field成为a queryset.我知道这种语法错了.感谢您的任何帮助.
我做了这样的事情:
qs = queryset \
.annotate(
field_a=ArrayAgg(Case(When(
related_model__field="A",
then="related_model__pk")
)),
field_b=ArrayAgg(Case(When(
related_model__field="B",
then="related_model__pk")
)),
field_c=ArrayAgg(Case(When(
related_model__field="C",
then="related_model__pk")
))
)
Run Code Online (Sandbox Code Playgroud)
现在有列表None或pk下的每个field_a,field_b并field_c在查询集的每一个对象。您也可以定义其他默认值Case来代替None。
| 归档时间: |
|
| 查看次数: |
6493 次 |
| 最近记录: |