2010-08-07 7 views

Répondre

0

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.