让我们假设我有下一个模型:
class A(model):
b = models.ManyToManyField("b", through="AB")
class B(model):
id = models.CharField()
class AB(model):
a = models.ForeignKey("a")
b = models.ForeignKey("b")
我想检索特定B对象的所有相关A对象,并为每个A对象加上注解字段count_something
。
b_obj = B.objects.prefetch_related(Prefetch('ab_set',
queryset=AB.objects.select_related('a')
.annotate(count_something = Count(....))))
.get(id=<b_id>)
我试过这种方法,但它不起作用
a_qs = [ab.a for ab in b_obj.ab_set.all()]
for a in a_qs:
print(a.count_something)
错误:
"A" object has no attribute 'count_something'
什么是正确的方法来实现我想要的?
2条答案
按热度按时间owfi6suc1#
这不是在
a
对象上注解的,而是在AB
对象上注解的,所以:koaltpgm2#
您可以将
"@property"
添加到A模型,如然后再用你的方式