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

相关文章
|
2月前
|
SQL 数据库 数据库管理
深入Django(七)
Django的数据库迁移系统是管理数据库模式变化的关键组件,自动化创建、修改和删除表及字段。它提供版本控制,便于团队协作。通过`makemigrations`生成迁移文件,`migrate`应用到数据库。迁移支持依赖关系和数据迁移功能,允许填充初始数据或执行数据转换。这个系统简化了数据库管理,促进了开发中的数据一致性。
29 5
|
2月前
|
数据库 数据安全/隐私保护 Python
深入Django(六)
本文档介绍了Django的表单系统,用于处理用户输入和数据验证。首先,表单通过声明式方式定义,如在`forms.py`中基于模型创建表单类。接着,在视图中处理GET和POST请求,使用`is_valid()`和`save()`方法验证和保存数据。在模板中,使用标签渲染表单和错误信息。表单系统还包括内置及自定义验证规则,以及与模型的集成,如`ModelForm`方便数据保存。此外,还有表单集、表单继承和自定义字段等高级功能。表单系统简化了用户输入管理和数据安全。
30 4
|
2月前
|
Python
深入Django(五)
Django的URL路由系统将URL映射到视图。创建URLconf涉及编写视图、定义URL模式(如`home`和`about`)并在项目主`urls.py`中包含应用URL。动态URL模式允许捕获数据,如`post/<int:post_id>/`,并在视图中使用。命名URL便于模板和视图中引用,通过`{% url %}`模板标签或`reverse`函数。正则表达式用于更复杂URL模式匹配。URL路由是Django中组织请求与响应的核心机制。
32 4
|
2月前
|
数据库 Python
深入Django(八)
了解Django的管理后台,它是一个用于管理应用数据的内置Web界面。要启用它,需在`admin.py`中注册模型,创建超级用户,并访问服务器的`/admin/`路径。可自定义后台,如定义模型显示(通过`list_display`, `list_filter`, `search_fields`),定制表单界面(定义表单类和覆盖字段)以及进行高级定制,如字段选项和重写方法。管理后台支持添加、编辑和删除记录,以及批量操作。
25 2
|
2月前
|
前端开发 数据管理 API
深入Django(二)
本文介绍了Django的模型(Models)系统,它是Django框架中处理数据库的核心部分。模型是通过Python类定义的,对应数据库中的表,属性代表表的字段。通过模型,可以方便地操作数据,如创建、查询、更新和删除记录。文中展示了如何创建`Author`和`Post`模型,以及如何使用ORM进行对象操作。此外,还提到了模型的高级特性,如字段选项、字段类型、关系以及自定义方法和属性,这些都是Django高效管理数据的关键。理解模型对于Django应用开发至关重要。
25 1
|
7月前
|
缓存 安全 API
Django
Django是一个用Python编写的开源Web框架,用于构建可扩展、高性能、安全的Web应用程序。Django具有许多内置功能,如用户认证、管理界面、缓存、静态文件处理等,可以帮助开发者快速搭建和开发Web应用程序。 Django的用途主要包括:
74 1
|
数据库 数据安全/隐私保护 Python
|
前端开发
Django-SerializerMethodField
DRF-Serializer-SerializerMethodField,更加灵活的修改返回给前端的数据
|
算法 前端开发 程序员
初识Django(一)
什么Django        Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。
1573 0
|
Python 前端开发 数据库
第24天,Django之ModelForm
一. 创建一个ModelForm 1.1 使用之前需要导入对应app中的models和Django提交的ModelForm类 from django.forms import ModelForm from app01.
1008 0