1

我有一个 Pizza 模型和一个 Topping 模型,两者之间存在多对多关系。

您能否推荐一种优雅的提取方式:

  1. 每个浇头的受欢迎程度(频率)
  2. 浇头之间的相关性(即哪组浇头最常见)

谢谢

4

1 回答 1

1

更新:找到了一种更好的方法,为连接表使用单独的模型。考虑这样的关系:

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'))

原答案

我以前也遇到过类似的情况。在我的情况下,模型是UnitWeapon。他们有一个多对多的关系。我想计算武器的受欢迎程度。这就是我的做法:

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())

我认为你可以对Pizzaand做同样的事情Topping。我怀疑可能还有其他(更好的)方法可以做到这一点。

于 2010-08-08T05:36:10.593 回答