gpt4 book ai didi

python - 使用 Django ORM 计算多对多关系的频率和相关性的优雅方法?

转载 作者:太空宇宙 更新时间:2023-11-03 19:36:14 24 4
gpt4 key购买 nike

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

你能推荐一种优雅的提取方式吗:

  1. 每个的受欢迎程度(频率)打顶
  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'))

原始答案:

我以前也遇到过类似的情况。就我而言,模型是 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())

我认为您可以对 PizzaTopping 执行相同的操作。我怀疑可能还有其他(更好)的方法来做到这一点。

关于python - 使用 Django ORM 计算多对多关系的频率和相关性的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3432184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com