这是我遇到的一个小问题。
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())
)
谢谢你的帮助!!!!