我在 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)
应该做什么?
您可以将焦点移至
B
模型:
B.objects.filter(a_id=1).values('user', 'content').distinct().count()