django 的ORM
class UserType(models.Model):
caption = models.CharField(max_length=32)
class UserInfo(models.Model):
user_type = models.ForeignKey(UserType)# user_type对象中封装id,caption
username = models.CharField(max_length=32)
Select |
insert |
|||
一对多 |
django |
正向 |
1.Models.userinfo.objects.filter(user_type__caption=xxx) 用户类型为xxx的用记 2. models.UserInfo.objects.select_related().all() 两个表做join |
1.models.UserInfo.objects.create(username=’xx’,user_type_id=n) 2.models.UserInfo.objects.create(username=’xx’, user_type=models.UserType.objects.get(caption=’xx’),age=m) |
反向 |
1. obj= models.UserType.objects.all() 2.obj=models.UserType.objects.filter(userinfo__age__gt=33) usertype创建后会对应的创建一个与子表名(userinfo)对应的列 userinfo指向子表 3. obj=models.UserType.objects.get(caption='ceo').userinfo_set.all() |
---- |
||
前端 |
正向 |
1. obj.user_name obj.user_type.caption 2. 与1 一样 |
----- |
|
反向 |
1.obj.caption obj.userinfo_set.first.username 2. 与 1 一样 3.obj.username or obj.age |
------ |
||
class Host(models.Model): hostname = models.CharField(max_length=32) class HostAdmin(models.Model): username = models.CharField(max_length=32) host = models.ManyToManyField(Host) |
||||
多对多 |
django |
正向 |
1.models.HostAdmin.objects.filter(host__hostname='host1').values() 管理host1的所有用户 2.admin_obj=models.HostAdmin.objects.filter(host__hostname__in=('host1','host2')).values().distinct() 管理host1 或 host2的所有用户 |
1.admin_obj = models.HostAdmin.objects.get(username='user1')host_obj_list = models.Host.objects.filter(id__lt=3)admin_obj.host.add(*host_obj_list) --因为host_obj_list是多条,所以加 * 号 |
反向 |
1. obj = models.Host.objects.get(id=3).hostadmin_set.all() Id=3的主机对应的管理员 2.obj = models.Host.objects.filter(hostadmin__username='user1') 管理员为user1 对应的主机 |
1. host_obj = models.Host.objects.get(id=3) admin_obj_list =models.HostAdmin.objects.filter(id__gt=1) host_obj.hostadmin_set.add(*admin_obj_list) |
||
前端 |
正向 |
1.admin.username 2. {% for admin in admin_obj %} <p>{{ admin.username}} {% for host in admin.host.all %}{{ host.hostname}}{% endfor %} 此处的all可以改为values,但如果改成values_list,后面就需要改成host.1 (1为index值) |
------- |
|
反向 |
1.obj.username 2.obj.hostname |
------------- |
注:1.表名_set只能跟在结果后面,不能跟在结果集后面
转载于:https://blog.51cto.com/120662/1766949
django 的ORM相关推荐
- django mysql orm教程_带你了解Django ORM操作(基础篇)
前言 在日常开发中,需要大量对数据库进行增删改查操作. 如果头铁的话,使用原生SQL是最好的,毕竟性能又高,又灵活. 但是通常情况下,我们不是太需要那么苛刻的性能,也没有那么多刁钻的需求用原生SQL ...
- Django 数据库ORM 操作 - 字段的类型和参数
通过Django的ORM创建表的时候,我们需要定义自己的类. 定义类的时候,他有各种各样的字段类型,每个字段都有自己的参数可以进行配置,下面简单的归纳一下. 首先看看字段的类型.尽管Python提供了 ...
- Django 中ORM 的使用
一:Django 中 orm 的使用 1:手动新建一个数据库 2 :告诉Django连接哪个数据库 settings.py里配置数据库连接信息: #数据库相关的配置项 DATABASES ={'def ...
- Django基础——ORM字段和字段参数
ORM概念: 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象( 1. 不同的程序员写的SQL水平参差不齐 2. ...
- 【Django】ORM操作#2
目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 ...
- django -- 实现ORM登录
前戏 上篇文章写了一个简单的登录页面,那我们可不可以实现一个简单的登录功能呢?如果登录成功,给返回一个页面,失败给出错误的提示呢? 在之前学HTML的时候,我们知道,网页在往服务器提交数据的时候,都是 ...
- django orm插入一条_如何通过django的ORM远程发布文章?
利用django的ORM可以方便的给数据库插入文章 但是假如我django放在阿里云,那我想在本地写个插件,每天很方便的插入一些数据,最好是通过ORM的,因为管理起来比较方便,会涉及到多个站,可能会有 ...
- django 模板mysql_59 Django基础三件套 , 模板{{}}语言 , 程序连mysql Django项目app Django中ORM的使用...
主要内容:https://www.cnblogs.com/liwenzhou/p/8688919.html 1 form表单中提交数据的三要素 a : form标签必须要有action和method的 ...
- django的orm指定字段名,表名 verbose_name_plural
django的orm指定字段名,表名 verbose_name_plural 1.指定字段名: 在定义字段的时候,增加参数db_column='real_field': 2.指定表名: 在model的 ...
- django orm_Django ORM简介
django orm 您可能听说过Django ,它是Python Web框架,用于"有期限的完美主义者". 就是那个可爱的小马 . Django最强大的功能之一是其对象关系映射器 ...
最新文章
- HTML5最新漏洞:用户硬盘或被垃圾数据塞满
- 如何写一个清晰明了的Bug
- 设计模式之外观模式(Fasade Pattern)
- 【含义解析】%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %m%n
- 如何才能优雅地书写JS代码
- android view getwidth 0,Android中View.getWidth()和View.getMeasuredWidth()的区别
- linux shell 用sed命令在文本的行尾或行首添加字符
- 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——收流篇:(四)example代码解析...
- 英特尔CEO:将在行业整合背景下大力收购半导体企业
- Python在一个文件夹下遍历得到所有的子文件路径和子文件后缀名
- abaqus的python安装文件在哪_Abaqus2016安装教程【附软件下载地址】
- origin图上显示数据标签_Origin中如何将曲线上的数据显示出来?
- 跨境电商Google广告投放详细教程
- mysql 分析explain命令执行sql的计划
- linux操作系统没声音,Linux系统下没有声音的解决方案
- HTML和CSS的知识点
- python实现LZW算法
- pandas处理excel单元格合并后的列
- 「AI Timer 说」我只是没有行动而已,我笃定。
- Android开发——适配终结者AutoLayout
热门文章
- 遍历dict的items输出tuple类型
- cnn_mnist_案例详解
- mesh和wifi中继的区别_什么是MESH WIFI?通俗易懂告诉你为什么需要它
- 框架生成的HTML修改,Django框架form表单验证 修改html标签的样式
- shields 徽标_所有徽标看起来都一样
- Openlayers中将某个feature置于最上层
- C#中将表示颜色的string转换成Color
- C#中教你一步步实现一个电话本窗体程序
- C#中控制窗体的显示与隐藏
- SpringBoot中用itext实现PDF导出时实现循环添加元素