gpt4 book ai didi

python - Django聚合和分组: code cleanliness problem

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:02 26 4
gpt4 key购买 nike

这是我遇到的一个小问题。


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())
)

感谢您的帮助!!!

最佳答案

来自 Django docs :

from django.db.models import Count
Song.objects.values('author','author__instrument').annotate(Count("id"))

我不是 100% 确定它会起作用(现在是凌晨 2:20),但我希望如此。

关于python - Django聚合和分组: code cleanliness problem ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3331299/

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