这是我遇到的一个小问题。Django聚合和分组:代码清洁问题
3个非常简单的模型:
>>> class Instrument(models.Model):
... name = models.CharField(max_length=100)
...
>>> class Musician(models.Model):
... instrument = models.ForeignKey(Instrument)
...
>>> class Song(models.Model):
... author = models.ForeignKey(Musician)
我想计数的歌曲数量,由仪器名称和作者分组
我必须把它的解决方案,但我想知道在纯django-orm中编写它的最佳方式是什么,例如代码将是干净,简洁和可重用的(我指的是可以使用的东西轻松重复使用以按不同属性分组)。什么其实我想看到的是,如果一些代码,我已经写了一般性地解决这个问题是非常有用的,或者如果我只是错过了一些东西大...
这里的第一个解决方案,我认为:
results = []
for instrument_name in Instrument.objects.values_list('instrument', flat=True):
for musician in Musician.objects.filter(instrument__name=instrument_name):
results.append((
instrument_name,
musician,
Song.objects.filter(author=musician).count())
)
谢谢你的帮助!
为什么是-1?我违反了规则吗? – sebpiq 2010-07-25 22:58:57
我没有给你-1,但我建议把它写成“我试图做X,但不知道如何 - 你能帮忙吗?”而不是作为一系列规则的挑战。你在寻求帮助,而不是进行代码竞争。 – 2010-07-25 23:22:00
当然......但另一方面,我知道我的问题的答案!我真正想知道的是,用纯粹的django-orm解决这个问题的最好方法是什么......也许我应该写这个! – sebpiq 2010-07-25 23:27:35