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 ...
随机推荐
- Entity FrameWork 单表对多实体
一个影片信息Clips表,四个字段:clipId,clipName,fileSize,fileName 方案一: [Table("Clips")] public class Cli ...
- 通过分析iframe和无阻塞脚本关系能让我们更懂iframe
在我上篇文章里,我提到一种使用iframe完成无阻塞脚本加载的方式,因为我对iframe的偏见很大,所以上篇文章里我没有展开讨论这个问题. 文章发表后有位网友问了我这样一个问题,下面是他问题的原文,如 ...
- js实现快速排序
非原创: var quickSort = function(arr){ if(arr.length<=1){return arr;} var pivotIndex = Math.floor(ar ...
- JavaScript思维导图—函数基础
JavaScript思维导图-来自@王子墨http://julying.com/blog/the-features-of-javascript-language-summary-maps/
- [ZigBee] 13、ZigBee基础阶段性回顾与加深理解——用定时器1产生PWM来控制LED亮度(七色灯)
引言:PWM对于很多软件工程师可能又熟悉又陌生,以PWM调节LED亮度为例,其本质是在每个周期都偷工减料一些,整体表现出LED欠压亮度不同的效果.像大家看到的七色彩灯其原理也类似,只是用3路PWM分别 ...
- SVNServer迁移
本文主要记录SVNServer从windows系列迁移到Centos的过程,以下几篇文章已经描述的很好了,本文就不再赘述. 注意问题: 配置权限时空格问题:包括前面不能有空格,=两边有空格等. 参考链 ...
- Oracle日期语言修改
-- value带有两个参数,第一个指下限,第二个指上限,将会生成下限到上限之间的数字,但不包含上限.select ceil(dbms_random.value(1000,9999)) from du ...
- 阿里云主机(aliyun-Linux) x64安装Redis详解
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/97.html?1455870336 如何在Linux上安装Redis呢, ...
- Atitit usrQBF2312 命名空间pkg 以及 api命名 spec规范
Atitit usrQBF2312 命名空间pkg 以及 api命名 spec规范 简化英文1 常用类库sdk的命名单词统计表1 简化时间规则1 Namsspace nam spec,参照java . ...
- React(一)基础点
prop实例 <div id="app"></div> <script src="bower_components/react/react. ...