I've got the flowing two models:
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")
For Item X I want to get a list of Item objects present in ItemList for all Profile objects that contain X in ItemList, sorted by how many times each object appears.
The best I can do so far is:
Item.objects.filter(user_itemlist__in = User.objects.filter(profile__ItemList = X))
and this returns the list of all Item objects I need, with duplicates (if Item Z is present in ItemList for 10 Profile objects it will appear 10 times in the query result).
How can I sort the result of the above query by the number of times each object appears in the result and remove duplicates? Is there any "django" way to do that?