Почему для аннотации требуется related_name?

Я не могу понять, почему related_name требуется для выполнения аннотации.

При попытке получить количество связанных объектов в виде аннотации, можно использовать следующее:

class ModelA(models.Model):
    (...)

class ModelB(models.Model):
    model_a_fk = models.ForeignKey(ModelA, related_name="model_bs")


ModelA.objects.annotate(num_model_b=Count('model_bs')).order_by('-num_model_b')

Почему на модели требуется related_name, и нельзя ли просто использовать нижеприведенный вариант?

ModelA.objects.annotate(num_model_b=Count('model_a_fk_set')).order_by('-num_model_b')

При этом возникает следующая ошибка:

FieldError: Cannot resolve keyword 'model_a_fk_set' into field. Choices are: id, (...)
Вернуться на верх