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相关推荐

  1. django mysql orm教程_带你了解Django ORM操作(基础篇)

    前言 在日常开发中,需要大量对数据库进行增删改查操作. 如果头铁的话,使用原生SQL是最好的,毕竟性能又高,又灵活. 但是通常情况下,我们不是太需要那么苛刻的性能,也没有那么多刁钻的需求用原生SQL ...

  2. Django 数据库ORM 操作 - 字段的类型和参数

    通过Django的ORM创建表的时候,我们需要定义自己的类. 定义类的时候,他有各种各样的字段类型,每个字段都有自己的参数可以进行配置,下面简单的归纳一下. 首先看看字段的类型.尽管Python提供了 ...

  3. Django 中ORM 的使用

    一:Django 中 orm 的使用 1:手动新建一个数据库 2 :告诉Django连接哪个数据库 settings.py里配置数据库连接信息: #数据库相关的配置项 DATABASES ={'def ...

  4. Django基础——ORM字段和字段参数

    ORM概念: 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象( 1. 不同的程序员写的SQL水平参差不齐 2. ...

  5. 【Django】ORM操作#2

    目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 ...

  6. django -- 实现ORM登录

    前戏 上篇文章写了一个简单的登录页面,那我们可不可以实现一个简单的登录功能呢?如果登录成功,给返回一个页面,失败给出错误的提示呢? 在之前学HTML的时候,我们知道,网页在往服务器提交数据的时候,都是 ...

  7. django orm插入一条_如何通过django的ORM远程发布文章?

    利用django的ORM可以方便的给数据库插入文章 但是假如我django放在阿里云,那我想在本地写个插件,每天很方便的插入一些数据,最好是通过ORM的,因为管理起来比较方便,会涉及到多个站,可能会有 ...

  8. django 模板mysql_59 Django基础三件套 , 模板{{}}语言 , 程序连mysql Django项目app Django中ORM的使用...

    主要内容:https://www.cnblogs.com/liwenzhou/p/8688919.html 1 form表单中提交数据的三要素 a : form标签必须要有action和method的 ...

  9. django的orm指定字段名,表名 verbose_name_plural

    django的orm指定字段名,表名 verbose_name_plural 1.指定字段名: 在定义字段的时候,增加参数db_column='real_field': 2.指定表名: 在model的 ...

  10. django orm_Django ORM简介

    django orm 您可能听说过Django ,它是Python Web框架,用于"有期限的完美主义者". 就是那个可爱的小马 . Django最强大的功能之一是其对象关系映射器 ...

最新文章

  1. HTML5最新漏洞:用户硬盘或被垃圾数据塞满
  2. 如何写一个清晰明了的Bug
  3. 设计模式之外观模式(Fasade Pattern)
  4. 【含义解析】%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %m%n
  5. 如何才能优雅地书写JS代码
  6. android view getwidth 0,Android中View.getWidth()和View.getMeasuredWidth()的区别
  7. linux shell 用sed命令在文本的行尾或行首添加字符
  8. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——收流篇:(四)example代码解析...
  9. 英特尔CEO:将在行业整合背景下大力收购半导体企业
  10. Python在一个文件夹下遍历得到所有的子文件路径和子文件后缀名
  11. abaqus的python安装文件在哪_Abaqus2016安装教程【附软件下载地址】
  12. origin图上显示数据标签_Origin中如何将曲线上的数据显示出来?
  13. 跨境电商Google广告投放详细教程
  14. mysql 分析explain命令执行sql的计划
  15. linux操作系统没声音,Linux系统下没有声音的解决方案
  16. HTML和CSS的知识点
  17. python实现LZW算法
  18. pandas处理excel单元格合并后的列
  19. 「AI Timer 说」我只是没有行动而已,我笃定。
  20. Android开发——适配终结者AutoLayout

热门文章

  1. 遍历dict的items输出tuple类型
  2. cnn_mnist_案例详解
  3. mesh和wifi中继的区别_什么是MESH WIFI?通俗易懂告诉你为什么需要它
  4. 框架生成的HTML修改,Django框架form表单验证 修改html标签的样式
  5. shields 徽标_所有徽标看起来都一样
  6. Openlayers中将某个feature置于最上层
  7. C#中将表示颜色的string转换成Color
  8. C#中教你一步步实现一个电话本窗体程序
  9. C#中控制窗体的显示与隐藏
  10. SpringBoot中用itext实现PDF导出时实现循环添加元素