Django查询集外键

5
在Django中,对于外键关系进行反向查找的正确方式是什么?例如,假设我有以下2个模型。
class Songs(models.Model):
    title = models.CharField(max_length=200)
    artist = models.CharField(max_length=200)
    genre = models.ForeignKey('Genres')

class Genres(models.Model):
    genre = models.CharField(max_length=100)

如果我希望用户能够根据流派搜索歌曲,我该怎么做?
例如下面是我想要实现的功能,但是我知道它不起作用,因为歌曲表的流派列是一个ID,而不是一个关键字。
song = models.Songs.objects.get(genre='Jazz')

2
你应该尝试使用单数形式来命名你的模型类。 - Burhan Khalid
1个回答

16

使用双下划线语法来访问相关模型中的genre字段:

Songs.objects.filter(genre__genre='Jazz')

为了可读性和一致性,请考虑将 genre 字段重命名为 name:


class Genres(models.Model):
    name = models.CharField(max_length=100)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接