django - 当外键不在当前模型中时,如何获取模型的查询集的值?
问题描述
我有以下型号:
class Work_Music(models.Model):
key = models.CharField(max_length=10, null=True, blank=True)
tonality = models.CharField(max_length=20, null=True, blank=True)
class Catalogue(models.Model):
work_music = models.ForeignKey(Work_Music, verbose_name=_('work_music'), on_delete=models.PROTECT)
name = models.CharField(max_length=100, null=True, blank=True)
name_short = models.CharField(max_length=100, null=True, blank=True)
no = models.CharField(max_length=100, null=True, blank=True)
related_field() 仅适用于 Work_Music 中的外键。许多目录/目录编号可以映射到一段音乐 (Work_Music)。如何在 Work_Music 上构建查询集以提取与作品相关的所有目录?
解决方案
使用 catalogue_set。
Django 的 ORM 会在外键的导航模型(本例中为 Work_Music)上自动为您创建字段。对于“一对多”关系,这是一个查询集,其中存在外键的模型名称附加_set
. 对于“一对一”关系,这只是存在外键的模型的名称。
假设一个名为 Work_Music 的实例work_music_instance
:
catalogues = work_music_instance.catalogue_set.all()
或者
catalogues = work_music_instance.catalogue_set.filter(...) # any query set operation
推荐阅读
- nginx - centos 7 nginx phpmyadmin 未找到
- python - 检查一个线段是否与一组线段相交
- php - JSON 数组:PHP 警告:array_count_values():只能计算 STRING 和 INTEGER 值
- ethereum - SSH 和以太坊节点
- git - 为什么git不能合并不同行不同变化的文本文件?
- c# - 将对象从 API 转换为字符串 C#
- android - 如何从 MapBox 的 LocationEngineProvider 创建 Observable?
- c# - 防止用户界面层依赖于数据访问层
- oauth-2.0 - WSO2 IS 5.6.0 和 OpenID Connect 声明
- sql - 从 ntext 中提取值