Так, вот то, что я хочу сделать. У меня есть модель Staff, которая имеет внешний ключ к модели User. У меня также есть модель Match, которая имеет внешний ключ к модели User.
Я хочу выбрать, сколько Соответствий имеет каждый Штат. Я не знаю, как сделать это, до сих пор я только получил его работающий на модель User. От Штата это не позволит аннотировать Соответствие.
Это - то, что работает правильно теперь
User.objects.annotate(amount=Count("match")).filter(Q(amount__gt=0)).order_by("amount")
И это - то, что я хотел сделать
Staff.objects.annotate(amount=Count("match")).filter(Q(amount__gt=0)).order_by("amount")
И между прочим, есть ли какой-либо способ отфильтровать соответствия? Я хочу отфильтровать соответствия определенным столбцом.
Это не работает?
Staff.objects.annotate(ammount=Count("user__match")).filter(Q(ammount__gt=0)).order_by("ammount")
Если и Staff, и Match имеют внешние ключи для User, но не друг к другу, не существует такой вещи, как «сколько совпадений есть у каждого Staff». Для каждого пользователя существует несколько кадров и соответствия, поэтому просто невозможно узнать, какой персонал для пользователя связан с каким соответствием для этого же пользователя.
Это не ограничение Django - это логическое ограничение, наложенное тем, как вы структурируете свои отношения.