【问题标题】:how to count number of instances of a subclass in python?如何计算python中子类的实例数?
【发布时间】:2017-09-02 13:37:28
【问题描述】:

我正在尝试创建一个网站,您可以在其中播放不同专辑中的歌曲。 我认为一切正常,但我只坚持一件事。在专辑的详细信息中,我还想显示它包含的歌曲数量。

这是我的模型:

from django.contrib.auth.models import Permission, User
from django.db import models


class Album(models.Model):
    user = models.ForeignKey(User, default=1)
    artist = models.CharField(max_length=250)
    album_title = models.CharField(max_length=500)
    genre = models.CharField(max_length=100)
    album_logo = models.FileField()
    is_favorite = models.BooleanField(default=False)

    def __str__(self):
        return self.album_title + ' - ' + self.artist


class Song(models.Model):
    album = models.ForeignKey(Album, on_delete=models.CASCADE)
    song_title = models.CharField(max_length=250)
    audio_file = models.FileField(default='')
    is_favorite = models.BooleanField(default=False)

    def __str__(self):
        return self.song_title

如何在专辑详情中显示歌曲数量?

【问题讨论】:

  • 这与子类无关。

标签: python django class django-models subclass


【解决方案1】:

您可以注释当前查询集中用于检索专辑的歌曲数量:

from django.db.models import Count

album_qs = Album.objects.filter(...) # your queryset
album_qs = album_qs.annotate(num_of_songs=Count('song'))

num_of_songs 可以被查询集中的每个对象访问,就像任何其他模型字段一样:

for album in album_qs:
    print(album.artist)
    print(album.num_of_songs) # use-case

参考:

https://docs.djangoproject.com/en/1.11/topics/db/aggregation/

【讨论】:

    猜你喜欢
    • 2022-11-26
    • 1970-01-01
    • 2021-01-01
    • 2017-02-26
    • 2014-10-24
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2013-06-10
    相关资源
    最近更新 更多