Обновление : Нашел лучший способ, используя отдельную модель для таблицы соединений. Рассмотрим такие отношения:
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)
Теперь вы можете сделать это:
from django.db.models import Count
Units_Weapons.objects.values('weapon').annotate(Count('unit'))
Оригинальный ответ :
Я сталкивался с подобной ситуацией раньше. В моем случае модели были Unit
и Weapon
. У них было много ко многим отношениям. Я хотел посчитать популярность оружия. Вот как я это сделал:
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())
Я думаю, вы можете сделать то же самое для Pizza
и Topping
. Я подозреваю, что могут быть другие (лучшие) способы сделать это.