У меня есть текущие две модели:
class Item(models.Model):
Name = models.CharField(max_length = 32)
class Profile(models.Model):
user = models.ForeignKey(User, unique = True)
ItemList = models.ManyToManyField(Item, related_name = "user_itemlist")
Для Item X я хочу получить список объектов Item, присутствующих в ItemList для всех объектов Profile, которые содержат X в ItemList, отсортированных по тому, сколько раз каждый объект появляется.
Лучшее, что я могу сделать на данный момент:
Item.objects.filter(user_itemlist__in = User.objects.filter(profile__ItemList = X))
и это возвращает список всех нужных мне объектов Item с дубликатами (если Item Z присутствует в ItemList для 10 объектов Profile, он появится в результате запроса 10 раз).
Как можно отсортировать результат вышеупомянутого запроса по количеству раз, когда каждый объект появляется в результате, и удалить дубликаты? Есть ли какой-нибудь "джанго" способ сделать это?