我有以下模型代码:
from django.db import models
from categories.models import Category
class MusicManager(models.Manager):
def get_query_set(self):
return super(MusicManager, self).get_query_set().filter(category='Music')
def count_music(self):
return self.all().count()
class SportManager(models.Manager):
def get_query_set(self):
return super(MusicManager, self).get_query_set().filter(category='Sport')
class Event(models.Model):
title = models.CharField(max_length=120)
category = models.ForeignKey(Category)
objects = models.Manager()
music = MusicManager()
sport = SportManager()
现在通过注册 MusicManager() 和 SportManager() 我可以调用 Event.music.all() 和 Event.sport.all() 查询。但是我怎样才能创建 Event.music.count() ?我应该在 MusicManager 的 count_music() 函数中调用 self.all() 以仅查询具有“音乐”类别的元素,还是我仍然需要先过滤它们以搜索类别?