在注释 Django 中显示两个不同的列计数

问题描述 投票:0回答:1

我在 Django 中注释时遇到麻烦。

我的项目中有两个模型。 (只是结构)

model A (field:name(char))
model B (field:A(A; related_name="b"), user(user), content(char; null=True))

model B
的数据就像...

row1 -> A:1, user:2, content:"content1"
row2 -> A:1, user:3, content:"content2"
row3 -> A:1, user:2, content:None
row4 -> A:2, user:1, content:None
row5 -> A:1, user:3, content:None

我的意图是根据被搜索的

model A
的pk来组合用户和内容的独特值。

如果我查

Model A
的pk:1,我想要的答案是2,原因如下。

row1 -> A:1, user:2
row2 -> A:1, user:3

所以原始代码是...

A.objects.annotate(count=Count(Concat("b__user", "b__content"), distinct=True)).get(pk=pk)

但是,查找

model A
中未引用的
model B
时,会出现值错误。 (数量:1)

应该做什么?

django django-models django-rest-framework django-views
1个回答
0
投票

您可以将焦点移至

B
模型:

B.objects.filter(a_id=1).values('user', 'content').distinct().count()
© www.soinside.com 2019 - 2024. All rights reserved.