我有一個模型(跟蹤)與兒童(等級)。這可以被描述(簡體)爲:兒童數值過濾後兒童數量
class Track(models.Model):
id = models.CharField('Unique ID', max_length=100,
primary_key=True)
title = models.CharField('Track title', max_length=100)
artist = models.CharField('Artist name', max_length=100)
class Rank(models.Model):
id = models.AutoField(primary_key=True)
trackid = models.ForeignKey(Track, related_name='rank')
cdate = models.DateField("Date", blank=True, null=True)
做這件事時:
track_list = Track.objects.filter(Q(artist__icontains=query) |
Q(title__icontains=query)) \
.annotate(children=Count('rank'))
for track in track_list:
print(track.children)
每個磁道的兒童的人數都接近100(如65,78,95),這是正確的。
但是,當我縮小查詢集進一步向下通過應用另一個過濾器和一個需要註解:
track_list = track_list.distinct() \
.filter(rank__cdate__year=filterquery) \
.annotate(entrydate=Min('rank__cdate')) \
.annotate(children=Count('rank'))
for track in track_list:
print(track.children)
兒童的數量爆炸到幾千每磁道。 任何想法?
感謝名單!像一個魅力 –