首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优雅的方法来计算频率和相关的多对多关系与Django ORM?

优雅的方法来计算频率和相关的多对多关系与Django ORM?
EN

Stack Overflow用户
提问于 2010-08-07 21:53:55
回答 1查看 393关注 0票数 1

我有一个必胜客模式和一个Topping模式,两者之间有着多到多的关系。

你能推荐一种优雅的提取方法吗?

  1. :每个顶头
  2. 的流行度(频率),顶点之间的相关性(即最常见的组合)

谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-08-08 05:36:10

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

代码语言:javascript
复制
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)

现在你可以这样做了:

代码语言:javascript
复制
from django.db.models import Count
Units_Weapons.objects.values('weapon').annotate(Count('unit'))

原始答案

我以前也遇到过类似的情况。在我的例子中,模型是UnitWeapon。他们有很多种关系。我想数数武器的受欢迎程度。我就是这样做的:

代码语言:javascript
复制
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做同样的事情。我怀疑可能有其他(更好的)方法来做这件事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3432184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档