ピザ モデルとトッピング モデルがあり、この 2 つの間に多対多の関係があります。
抽出するエレガントな方法をお勧めできますか:
- 各トッピングの人気(頻度)
- トッピング間の相関関係 (つまり、トッピングのどのセットが最も頻繁に使用されるか)
ありがとう
ピザ モデルとトッピング モデルがあり、この 2 つの間に多対多の関係があります。
抽出するエレガントな方法をお勧めできますか:
ありがとう
更新:結合テーブルに別のモデルを使用するより良い方法が見つかりました。次のような関係を考えてみましょう。
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
。他の(より良い)方法があるのではないかと思います。