1

ピザ モデルとトッピング モデルがあり、この 2 つの間に多対多の関係があります。

抽出するエレガントな方法をお勧めできますか:

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

Pizzaと についても同じことができると思いますTopping。他の(より良い)方法があるのではないかと思います。

于 2010-08-08T05:36:10.593 に答える