Django--models一对多
一对多--foreignkey
应用场景
当一张表中创建一行数据时,有一个单选的下拉框(可以被重复选择)
例如:创建用户信息时候,需要选择一个用户类型【普通用户】【金牌用户】【铂金用户】等。
创建表
根据代码中定义的类来自动生成数据库表。
1
2
3
4
5
6
7
|
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 ) age = models.IntegerField() |
创建数据
caption数据
1
2
3
|
for co in [ 'CEO' , 'CTO' , 'COO' ]: dic = { 'caption' :co} models.UserType.objects.create( * * dic) |
userinfo数据
两种方法:
NO.1
1
2
|
dic = { 'username' : 'xx' , 'age' : 88 , 'user_type_id' : 1 } models.UserInfo.objects.create( * * dic) |
NO.2
1
2
|
dic = { 'username' : 'xx' , 'age' : 88 , 'user_type' :models.UserType.objects.get( id = 1 )} models.UserInfo.objects.create( * * dic) |
普通查找
1
2
3
|
result = models.UserInfo.objects. all () for item in result: print item.username,item.age,item.user_type.caption |
正向查找
foreignkey在这张表中叫正向查找,跨表filter用双下划线
例如:找所有CEO的用户
1
|
models.UserInfo.objects. filter (user_type__caption = 'CEO' ) |
反向查询
反向查询时,除了自己的id和caption列,Django的ORM多提供了一个UserInfo_set列,还可以在他的基础上加条件
获取用户类型CEO,并且用户名是xxx的
1
2
|
line = models.UserType.objects.get( id = 1 ) print line.userinfo_set. filter (username = 'xxx' ) |
获取某个人是什么用户类型?当前用户类型下有多少人?
userinfo是Django在UserType表中自动创建的隐藏字段
1
2
3
|
user_type_obj = models.UserType.objects.get(userinfo__username = 'xxx' ) print user_type_obj.caption #用户类型 print user_type_obj.userinfo_set. all ().count() #此类型用户数量 |
Django--models一对多的更多相关文章
- django models的点查询/跨表查询/双下划线查询
django models 在日常的编程中,我们需要建立数据库模型 而往往会用到表与表之间的关系,这就比单表取数据要复杂一些 在多表之间发生关系的情形下,我们如何利用models提供的API的特性获得 ...
- django models 数据库操作
django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...
- Django models 操作高级补充
Django models 操作高级补充 字段参数补充: 外键 约束取消 ..... ORM中原生SQL写法: raw connection extra
- Django models Form model_form 关系及区别
Django models Form model_form
- Django models .all .values .values_list 几种数据查询结果的对比
Django models .all .values .values_list 几种数据查询结果的对比
- django models数据类型
Django Models的数据类型 AutoField IntegerField BooleanField true/false CharField maxlength,必填 TextField C ...
- django models 类型整理 version:1.8.3
django models 类型整理 version:1.8.3 网上百度到的最上面的一篇已经是11年的了,django变化很大,现在把1.8.3版的models类型大致整理了下贴出来 普通键部分 F ...
- Django models中关于blank与null的补充说明
Django models中关于blank与null的补充说明 建立一个简易Model class Person(models.Model): GENDER_CHOICES=( (1,'Male'), ...
- Django Models的数据类型汇总
https://blog.csdn.net/devil_2009/article/details/41735611 Django Models的数据类型 汇总 AutoField IntegerFie ...
- Django - models.py 应用
Django - models.py 应用 编写 models.py 文件 from django.db import models # Create your models here. class ...
随机推荐
- 【原创】还原Hyper-V 到一个新的虚拟机
Context: I need to restore VM31 backup (via 'Windows Server Backup' tool) as another new Hyper-V mac ...
- 【转】yahoo前端优化军规
雅虎给出了前端优化的34条法则(包括Yslow规则22条) 详细说明,下载转发 ponytail 的译文(来自帕兰映像). Minimize HTTP Requests 减少http请求 图片.css ...
- 单一职责原则(Single Responsibility Principle)
单一职责原则(SRP:The Single Responsibility Principle) 一个类应该有且只有一个变化的原因. There should never be more than on ...
- 翻译-高效DevOps的10项实践
原文链接: http://www.drdobbs.com/architecture-and-design/top-10-practices-for-effective-devops/240149363 ...
- Java基础之I/O和file
五.IO流1.IO流概述 (1)用来处理设备(硬盘,控制台,内存)间的数据. (2)java中对数据的操作都是通过流的方式. (3)java用于操作流的类都在io包中. (4)按照流操作的数据的类型不 ...
- Java用来进行批量文件重命名,批量提取特定类型文件
原因: 因为在网上下载视频教程,有的名字特别长,一般都是机构或者网站的宣传,不方便直接看到视频的简介,所以做了下面的第一个功能. 因为老师发的课件中,文件夹太多,想把docx都放在同一个文件夹下面,一 ...
- Java程序员的日常 —— 注册工厂的妙用
注册工厂是一种很常用的框架书写方法,它适合于快速创建相同类型的对象. 举个栗子 比如一个家具工厂,有沙发.椅子.茶几等等,正常的编程模式是这样的: //创建 class 沙发{} class 椅子{} ...
- 每天一个linux命令(13):less 命令
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面翻 ...
- EasyUI Datagrid Datetime(EasyUI DataGrid 时间格式化)
EasyUI DataGrid 时间格式化 方法一: var Common = { //EasyUI用DataGrid用日期格式化 TimeFormatter: function (value, re ...
- 安装指定版本的cordova
安装指定版本的cordova 刚接触cordova看到教程肯定是直接 npm install -g cordova 然后下载个集成的adt 以为万事大吉,开始hello world 玩玩没有想到最新的 ...