tôi có các mô hình sau:Loại trừ toàn bộ QuerySet từ kết quả
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)
Tôi muốn làm một truy vấn như thế này:
banned_songs = BannedSong.objects.filter(lib_entry__player=activePlayer)
available_songs = LibraryEntry.objects.filter(player=activePlayer).exclude(banned_songs)
Về cơ bản nếu một bài hát bị cấm, tôi muốn loại trừ từ bộ bài hát có sẵn của tôi. Có cách nào để làm điều này trong Django?
Bạn có thể không làm cho 'is_banned' một lĩnh vực boolean của mô hình LibraryEntry của bạn? – jimw
Có, nhưng rất ít bài hát thực sự bị cấm so với con số không có. Tôi nghĩ rằng việc thêm một trường boolean mà phần lớn chỉ là một giá trị là biểu mẫu không hợp lệ. –
Tôi sẽ không nói như vậy, nhưng tôi cho rằng đó là vấn đề về hương vị. – jimw