Django 查询集外键

Posted

技术标签:

【中文标题】Django 查询集外键【英文标题】:Django queryset foreign key 【发布时间】:2015-03-09 03:57:46 【问题描述】:

在 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)

如果我希望用户能够根据流派搜索歌曲,我会怎么做?

例如,下面是我想要做的,但我知道它不起作用,因为 Songs 表的流派列是 ID,而不是关键字。

song = models.Songs.objects.get(genre='Jazz')

【问题讨论】:

你应该尝试用单数命名你的模型类。 【参考方案1】:

使用double underscore syntax 到达相关模型中的genre 字段:

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

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

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

【讨论】:

以上是关于Django 查询集外键的主要内容,如果未能解决你的问题,请参考以下文章

Django外键查询,为啥它返回None?

Django:查询多个外键

Django,从反向外键查询添加数据(外键加入过滤器)

Django 外键查询

在 Django 中查询外键数据

Django - 查询外键 ID 时避免连接?