ho i seguenti modelli:Escludere intera QuerySet dai risultati
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)
Mi piacerebbe fare una query come questa:
banned_songs = BannedSong.objects.filter(lib_entry__player=activePlayer)
available_songs = LibraryEntry.objects.filter(player=activePlayer).exclude(banned_songs)
In pratica se una canzone è vietato, voglio escludere dal mio set di canzoni disponibili. C'è un modo per farlo in Django?
si fa a non fare 'is_banned' un campo booleano del modello LibraryEntry? – jimw
Sì, ma pochissime canzoni saranno effettivamente bannate rispetto al numero che non lo sono. Ho pensato di aggiungere un campo booleano che per la maggior parte sarà solo un valore è una cattiva forma. –
Non lo direi, ma suppongo sia una questione di gusti. – jimw