Django 获取ManyToManyField&x27型号;通过班长

Django 获取ManyToManyField&x27型号;通过班长,django,django-models,django-queryset,Django,Django Models,Django Queryset,考虑到该模型结构: class Playlist(models.Model): track_list = models.ManyToManyField('Track', blank=True, through='TrackToPlaylist') class Track(models.Model): artist = models.CharField(max_length=128) class TracktoPlaylistManager(models.Manager):

考虑到该模型结构:

class Playlist(models.Model):
    track_list = models.ManyToManyField('Track', blank=True, through='TrackToPlaylist')


class Track(models.Model):
    artist = models.CharField(max_length=128)

class TracktoPlaylistManager(models.Manager):
    def get_ordered_tracks(self):
        return sorted(self.get_queryset(), key=lambda x: x.votes_balance, reverse=True)

class TracktoPlaylist(models.Model):
   track = models.ForeignKey(Track)
   playlist = models.ForeignKey(Playlist)

   objects = TracktoPlaylistManager()

   @property
   def votes_balance(self):
       # here's order calculated
       return

我想通过模型的管理器访问以获得播放列表对象的已排序曲目。但是Playlist.objects.first().track_list是一个ManyToManyFieldManager对象
Playlist.objects.first().track_list.through.objects
返回此管理器,但我必须按播放列表筛选实例。。。这是双重工作

嗯,你为什么有
模式?听起来没必要。您可能只是将
播放列表
中的
曲目列表
字段作为m2m字段,而不使用
通过
,然后让经理直接进入
播放列表
,对吗?但我需要分别为每个播放列表的曲目投票。应该有办法通过班主任来解决。。。