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:

  1. общее количество объектов B для данного объекта A
  2. количество объектов B для данного объекта A, где city='city_1'
  3. количество объектов 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, но, к сожалению, он мне не помог.

Вернуться на верх