jc1*_*127 5 python django django-queryset django-rest-framework drf-queryset
我有一个检索像这样的对象的查询:
{
"id": 1,
"tags": [1, 2, 3]
}
Run Code Online (Sandbox Code Playgroud)
我想检查tags
对象的字段中是否存在给定的标记(例如 1),并将annotate
检查结果作为对象的字段:
{
"id": 1,
"tagged": true
}
Run Code Online (Sandbox Code Playgroud)
这就是我想出的
annotate(
tagged=Exists(
Articles.tag_set.through.objects.filter(
article_id=OuterRef("pk"), tag_id=tag.id
)
)
)
Run Code Online (Sandbox Code Playgroud)
由于该关系tags
已由主查询加载,因此对我来说,拥有辅助查询似乎是多余的。
有没有更简单的方法来构造这个查询?类似于过滤器in
查找语法的东西。
假设标签是一个ArrayField
q = Article.objects.annotate(
tagged=Exists(
Article.objects.filter(id=OuterRef('id'), tags__contains=[1])
)
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1091 次 |
最近记录: |