Django: подсчитайте, сколько у меня связанных объектов
У меня есть следующие неуправляемые модели django:
class A(models.Model):
# some fields here
class Meta:
app_label = "app"
db_table = "table_A"
managed = False
и еще один, который имеет внешний ключ к модели A:
class B(models.Model):
# some fields here
city = models.CharField()
obj_a = models.ForeignKey(A, on_delete=models.RESTRICT, related_name="b_objects")
class Meta:
app_label = "app"
db_table = "table B"
managed = False
Мне нужно написать конечную точку, которая бы возвращала информацию об объектах A + некоторую статистику по объектам B, связанную с конкретным объектом A:
- общее количество объектов B для данного объекта A
- количество объектов B для данного объекта A, где city='city_1'
- количество объектов B для данного объекта A, где city='city_2' (результаты 2 и 3 сложатся в 1)
Вот что у меня получилось на данный момент (не пробовал работать со 2 и 3 пулями, так как 1-я пока не работает):
class MyView(ListAPIView):
serializer_class = MySerializer
queryset = A.objects.prefetch_related("b_objects").annotate(
total=Count("b_objects")
).all()
У меня возникла ошибка 'Cannot resolve keyword 'b_objects' into field.'
Вот MySerializer:
class MySerializer(serializers.ModelSerializer):
b_objects = BSerializer(many=True)
class Meta:
model = A
fields = "__all__"
Я нашел этот вопрос Django count related objects, но, к сожалению, он мне не помог.