Django由一查多

简介: Django由一查多

BookInfo 是一, HeroInfo 是多( HeroInfo 定义了外键,对应 BookInfo

一、单个对象查询

一对应的模型类对象.多对应的模型类名小写_set

b = BookInfo.objects.get(id=1)

b.heroinfo_set.all()

二、多个对象同时查询

使用 values_list 方法实现 left join 效果。

一对应的模型类对象.objects.values_list(要查询的字段名, ...)

BookInfo.objects.valueslist('heroinfo__id', 'heroinfo__name')

由一查多时, values_list 中会有一个字段(该字段是多模型类对象小写名),根据此字段可以查询多对象。如果要查询多对象的某个属性,则用两个下划线链接 heroinfo__id

注意: 如果列出多个字段时, flat=True 属性不能使用,将多个字段同时列出即可。最后的查询结果是 Queryset 对象,可以通过工厂方法 list() 进行转换。转换后效果是列表套元祖,形如:更多精彩文章请关注公众号『Pythonnote』

[('34143124', '小闫同学'), ('4321443', '小闫同学'), ...]

如何将列表套元祖转换为列表套字段的形式

a = ('4321', '小闫')

b = ('id', 'name')

dict(zip(b, a))

相关文章
|
3月前
|
SQL 安全 数据库
Django
【9月更文挑战第1天】Django
43 0
|
4月前
|
SQL 前端开发 API
Django 系列
【8月更文挑战第20天】
30 1
|
7月前
|
数据库 数据安全/隐私保护 Python
深入Django(六)
本文档介绍了Django的表单系统,用于处理用户输入和数据验证。首先,表单通过声明式方式定义,如在`forms.py`中基于模型创建表单类。接着,在视图中处理GET和POST请求,使用`is_valid()`和`save()`方法验证和保存数据。在模板中,使用标签渲染表单和错误信息。表单系统还包括内置及自定义验证规则,以及与模型的集成,如`ModelForm`方便数据保存。此外,还有表单集、表单继承和自定义字段等高级功能。表单系统简化了用户输入管理和数据安全。
46 4
|
7月前
|
前端开发 Python
深入Django(四)
**Django模板系统**简介:用于结合数据与HTML,生成网页内容。模板系统让动态数据能插入静态页面,模板语言支持Python代码嵌入。创建模板涉及在应用目录下建立`templates`文件夹及编写HTML。使用时,视图通过`render`函数加载模板,URL配置指向相应视图。模板语言包含控制结构(如if、for)、过滤器(如日期格式化、字符串截取)和自定义过滤器。模板继承则促进布局一致性,允许子模板扩展基础模板。模板系统简化了Django中的动态内容渲染。
30 3
|
7月前
|
Python
深入Django(三)
本文详细介绍了Django视图(Views)。视图是Django中处理用户请求并返回响应的函数或类,负责应用程序逻辑。文章通过实例展示了如何创建简单视图、使用类视图以及如何与模板配合动态生成HTML内容。此外,还提到了视图处理表单、权限认证和错误处理的功能。总之,Django视图是应用的核心组件,用于处理业务逻辑和用户交互。
32 2
|
7月前
|
数据库 Python
深入Django(八)
了解Django的管理后台,它是一个用于管理应用数据的内置Web界面。要启用它,需在`admin.py`中注册模型,创建超级用户,并访问服务器的`/admin/`路径。可自定义后台,如定义模型显示(通过`list_display`, `list_filter`, `search_fields`),定制表单界面(定义表单类和覆盖字段)以及进行高级定制,如字段选项和重写方法。管理后台支持添加、编辑和删除记录,以及批量操作。
43 2
|
Python
初识Django
初识Django
69 0
|
算法 前端开发 网络安全
【Django】Hello,DJango!
这样就在主目录下创建了一个自己的项目以下统称创建的项目路径为根目录(即ppeua_app/)
104 0
|
Python
Django 项目重命名
  在日常学习工作过程中,我们难免需要复用以前的项目,这里讲下复用 Django 项目并重命名的过程。 1.修改项目名称,使用 pycharm -> refactor 重命名整个项目。   2.修改 manage.py 和 Django 下和项目名称相同的文件夹,使用 grep 指令找出和项目有关的字符串,如: grep 'test4' *.py 逐一修改。
4610 0
|
数据库 数据安全/隐私保护 Python