Почему для аннотации требуется 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, (...)