0
我有2个Django模型 - DJ和歌曲。如何从Django的一组查询集中获取不同的查询集?
class DJ(models.Model):
name = models.CharField(max_length=50, unique=True)
rank = models.IntegerField()
class Song(models.Model):
song_id = models.IntegerField()
name = models.CharField(max_length=150)
artist = models.ForeignKey(DJ, default=None, blank=True, null=True)
release = models.CharField(max_length=500, default=None, blank=True, null=True)
release_date = models.DateField()
duplicate = models.BooleanField(default=False)
我试图获得具有相同名称的特定DJ的所有歌曲集。
这就是我正在做的是
for dj in DJ.objects.all():
song_group_list = []
dj_song_list = Song.objects.filter(artist=dj)
for song in dj_song_list:
song_group = dj_song_list.filter(name=song.name).order_by('song_id')
if len(song_group) > 1:
if song_group not in song_group_list:
song_group_list.append(song_group)
for group in song_group_list:
print group
此输出复制集具有相同的查询集的结果。
[<Song: Ping Pong>, <Song: Ping Pong>, <Song: Ping Pong>]
[<Song: Everybody Is In The Place>, <Song: Everybody Is In The Place>, <Song: Everybody Is In The Place>]
[<Song: Jumper>, <Song: Jumper>, <Song: Jumper>]
[<Song: Man With The Red Face>, <Song: Man With The Red Face>, <Song: Man With The Red Face>, <Song: Man With The Red Face>, <Song: Man With The Red Face>, <Song: Man With the Red Face>]
[<Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>]
[<Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>, <Song: Wake Up>]
如何才能获得上述问题的不同查询集?
你能解释一下你想要的吗? – Kasramvd 2014-08-31 09:43:03
@Kasra我的DJ模型有重名歌曲(但其他字段不同)。我正在试着为特定的DJ获得同名歌曲。 – 2014-08-31 10:05:05
你可以添加你的dj模型到你的问题吗? – Kasramvd 2014-08-31 10:59:11