Mettre à jour: trouvé une meilleure façon d'utiliser un modèle séparé pour la table de jointure. Considérons une relation comme ceci:
class Weapon(models.Model):
name = models.CharField(...)
class Unit(models.Model):
weapons = models.ManyToManyField(Weapon, through = 'Units_Weapons')
class Units_Weapons(models.Model):
unit = models.ForeignKey(Unit)
weapon = models.ForeignKey(Weapon)
Maintenant, vous pouvez faire ceci:
from django.db.models import Count
Units_Weapons.objects.values('weapon').annotate(Count('unit'))
Réponse originale:
Je fait face à une situation semblable. Dans mon cas, les modèles étaient Unit
et Weapon
. Ils avaient une relation de plusieurs à plusieurs. Je voulais compter la popularité des armes. Voilà comment je suis allé à ce sujet:
class Weapon(models.Model):
name = models.CharField(...)
class Unit(models.Model):
weapons = models.ManyToManyField(Weapon)
for weapon in Weapon.objects.all():
print "%s: %s" % (weapon.name, weapon.unit_set.count())
Je pense que vous pouvez faire la même chose pour Pizza
et Topping
. Je soupçonne qu'il pourrait y avoir d'autres (meilleures) façons de le faire.