当前位置: 首页 > news >正文

django之反向关系查询<related_model>_set/related_name

假设有两个模型:AuthorPost,其中Post模型通过ForeignKey字段与Author模型相关联。

模型定义
from django.db import modelsclass Author(models.Model):first_name = models.CharField(max_length=30)last_name = models.CharField(max_length=30)class Post(models.Model):title = models.CharField(max_length=100)content = models.TextField()author = models.ForeignKey(Author, on_delete=models.CASCADE)created_at = models.DateTimeField(auto_now_add=True)

在这个例子中,Post模型有一个ForeignKey字段author,指向Author模型。这意味着每个Post对象都与一个Author对象相关联。

反向关系查询

通过反向关系查询,可以从Author对象获取所有与之相关联的Post对象。默认情况下,Django会为你创建一个名为post_set的反向关系管理器。

使用示例
# 获取一个特定的作者对象
author = Author.objects.get(id=1)# 使用反向关系查询获取该作者的所有文章
posts = author.post_set.all()# 打印所有文章的标题
for post in posts:print(post.title)

在这个示例中,author.post_set.all()返回的是一个QuerySet,包含了所有与该Author对象相关联的Post对象。

自定义反向关系名称

如果不喜欢默认的<related_model>_set命名方式,可以在定义ForeignKey字段时使用related_name参数来指定一个自定义的反向关系名称。

示例
class Post(models.Model):title = models.CharField(max_length=100)content = models.TextField()author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='posts')created_at = models.DateTimeField(auto_now_add=True)

现在可以使用自定义的反向关系名称posts来获取与某个Author对象相关联的所有Post对象。

# 获取一个特定的作者对象
author = Author.objects.get(id=1)# 使用自定义的反向关系名称获取该作者的所有文章
posts = author.posts.all()# 打印所有文章的标题
for post in posts:print(post.title)

http://www.mrgr.cn/news/3417.html

相关文章:

  • 后端开发刷题 | 跳台阶问题
  • Ruby模板引擎:构建动态视图的艺术
  • c++指南 继承和多态
  • HTTP/1.1
  • 好用的呼叫系统:天润融通,打造高效通信新体验
  • Hooks 「 useImperativeHandle 」子组件向父组件暴露方法
  • 驾驭时间之舟:SQL中时序数据处理的深度探索
  • Chainlit接入FastGpt接口快速实现自定义用户聊天界面
  • 探索CSS的未来与过去::past-link伪类的创新应用
  • gurobi约束条件使用大全(`model.addConstr()`添加单个约束和`model.addConstrs()`添加多个约束和强不等式约束)
  • 【Gradle】代理配置
  • 视频监控汇聚算法平台训练站车辆类型算法分析车辆类型检测应用方案
  • JUC知识点总结
  • MySQL——单表查询(二)按条件查询(8)使用百分号和下划线通配符进行查询操作
  • Python Word文档安全 - 设置和解除Word文档保护
  • 更改Docker默认存储位置
  • AI搜索产品:秘塔、天工、perplexity、felo、360AI搜索
  • FFmpeg的入门实践系列二(基础知识)
  • Spring Cloud Config 与 Spring Cloud Bus 来实现动态配置文件
  • 网络安全-安全策略初认识