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字段,而不使用通过
,然后让经理直接进入播放列表
,对吗?但我需要分别为每个播放列表的曲目投票。应该有办法通过班主任来解决。。。