django – 从结果中排除整个QuerySet
发布时间:2020-12-16 23:24:12 所属栏目:Python 来源:网络整理
导读:我有以下型号: class LibraryEntry(models.Model): player = models.ForeignKey(Player) player_lib_song_id = models.IntegerField() title = models.CharField(max_length=200) artist = models.CharField(max_length=200) album = models.CharField(max_
我有以下型号:
class LibraryEntry(models.Model): player = models.ForeignKey(Player) player_lib_song_id = models.IntegerField() title = models.CharField(max_length=200) artist = models.CharField(max_length=200) album = models.CharField(max_length=200) track = models.IntegerField() genre = models.CharField(max_length=50) duration = models.IntegerField() is_deleted = models.BooleanField(default=False) class Meta: unique_together = ("player","player_lib_song_id") def __unicode__(self): return "Library Entry " + str(self.player_lib_song_id) + ": " + self.title class BannedSong(models.Model): lib_entry = models.ForeignKey(LibraryEntry) def __unicode__(self): return "Banned Library Entry " + str(self.lib_entry.title) 我想做这样的查询: banned_songs = BannedSong.objects.filter(lib_entry__player=activePlayer) available_songs = LibraryEntry.objects.filter(player=activePlayer).exclude(banned_songs) 基本上如果一首歌被禁止,我想把它从我的可用歌曲中排除.有没有办法在Django中这样做? 解决方法banned_song_ids = (BannedSong.objects.filter(lib_entry__player=activePlayer) .values_list('lib_entry',flat=True)) available_songs = (LibraryEntry.objects.filter(player=activePlayer) .exclude('id__in' = banned_song_ids)) 替代方案是: available_songs = (LibraryEntry.objects.filter(player=activePlayer) .filter(bannedsong__isnull = True)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python中end=''
- Linux下通过python访问MySQL、Oracle、SQL Server数据库的方
- python – 尝试/除了块声明多个值
- python – 具有浮点形式输入的django整数模型字段
- django – MongoEngine _types和_cls字段
- python-3.x – Python – Zeep SOAP复杂标题
- python – 在pylint中强制字符串格式
- python – 转换Tensorflow图形以使用Estimator,使用`sampl
- python – 在postman的post请求中,flask返回400
- 各种Python库安装包下载地址与安装过程详细介绍(Windows版)