Как отсортировать по аннотированному Count () в связанной модели в Django

я строю базу данных о лесозаготовках в Джанго и яУ меня проблема с запросом.

настроил мои модели на включение (среди прочего) модели Food, связанной с моделью User через M2M-поле "потребитель» через модель потребления. Модель Food описывает пищевые блюда, а модель потребления описывает пользователя.Потребление продуктов питания (дата, количество и т. д.).

class Food(models.Model):
    food_name = models.CharField(max_length=30)
    consumer = models.ManyToManyField("User", through=Consumption)

class Consumption(models.Model):
    food = models.ForeignKey("Food")
    user = models.ForeignKey("User")

Я хочу создать запрос, который возвращает все объекты Food, упорядоченные по количеству раз, которое объект Food появляется в таблице потребления для этого пользователя (количество раз, которое пользователь потреблял пищу) .I '

Я пробую что-то в строке:

Food.objects.all().annotate(consumption_times = Count(consumer)).order_by('consumption_times')`

Но это, конечно, будет учитывать все объекты потребления, связанные с объектом питания, а не только объекты, связанные с пользователем. Нужно ли менять свои модели или я просто упускаю что-то очевидное в запросах?

Это довольно срочная операция (помимо всего прочего,используется для заполнения поля автозаполнения во внешнем интерфейсе), а в таблице Food есть пара тысяч записей, поэтому яЯ предпочитаю выполнять сортировку в конце базы данных, а не метод грубой силы и перебирать результаты, выполняя:

Consumption.objects.filter(food=food, user=user).count()

а затем с помощью сортировки Python, чтобы отсортировать их. Я неЯ думаю, что этот метод будет очень хорошо масштабироваться при увеличении пользовательской базы, и я хочу с самого начала спроектировать базу данных как будущее.

Есть идеи?