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 ...
随机推荐
- Replication的犄角旮旯(一)--变更订阅端表名的应用场景
<Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...
- javascript opacity兼容性随笔
一.CSS兼容代码 .transparent { filter:alpha(opacity=50); /* IE */ -moz-opacity:0.5; /* FireFox old version ...
- Xamarin开发Android笔记:拍照或相册选取图片角度问题
在开发Android应用的时候,可能会遇到类似微信朋友圈中拍照或相册选取图片的场景,拍照或选取图片之后在显示的时候却发现图片的角度不对,明明是竖版拍照,显示出来缺失躺着的. 这是因为在某些特定手机上例 ...
- sublime Text 2 制表符
写python的时候经常会有提示indent expected错误很常见,比如同一个文件有的是用空格敲出来的,有的是用tab键出来的这时候错误很难排查,这里说说在notepad++跟sublime下的 ...
- 图解集合2:LinkedList
初识LinkedList 上一篇中讲解了ArrayList,本篇文章讲解一下LinkedList的实现. LinkedList是基于链表实现的,所以先讲解一下什么是链表.链表原先是C/C++的概念,是 ...
- 自己写一个java.lang.reflect.Proxy代理的实现
前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Pr ...
- dijit样式定制之TextBox(一)
参考资料:http://dojotoolkit.org/reference-guide/1.9/dijit/themes.html http://archive.dojotoolkit.org/nig ...
- 移动App开发需要更多的PaaS平台而不是IaaS
时代的变迁,创业的大潮,越来越多的人关注了有点开发,越来越多的人了解了互联网服务术语:PaaS.IaaS.SaaS.BaaS等.今天大家在开发App的时候这么多复杂的云服务如何来选择呢? IaaS服务 ...
- mssql 小技巧
代码1:查看sql的执行时间 SET STATISTICS PROFILE ON SET STATISTICS IO ON SET STATISTICS TIME ON select * from M ...
- 【转载】关于sql server 代理(已禁用代理xp)
原文地址:http://blog.sina.com.cn/s/blog_493cafbb0100qy91.html 症状: SQL SERVER2005里面,启动SQL代理服务,启动正常,但是在sql ...