一对多--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一对多的更多相关文章

  1. django models的点查询/跨表查询/双下划线查询

    django models 在日常的编程中,我们需要建立数据库模型 而往往会用到表与表之间的关系,这就比单表取数据要复杂一些 在多表之间发生关系的情形下,我们如何利用models提供的API的特性获得 ...

  2. django models 数据库操作

    django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...

  3. Django models 操作高级补充

    Django models 操作高级补充 字段参数补充: 外键 约束取消 ..... ORM中原生SQL写法: raw connection extra

  4. Django models Form model_form 关系及区别

    Django models Form model_form

  5. Django models .all .values .values_list 几种数据查询结果的对比

    Django models .all .values .values_list 几种数据查询结果的对比

  6. django models数据类型

    Django Models的数据类型 AutoField IntegerField BooleanField true/false CharField maxlength,必填 TextField C ...

  7. django models 类型整理 version:1.8.3

    django models 类型整理 version:1.8.3 网上百度到的最上面的一篇已经是11年的了,django变化很大,现在把1.8.3版的models类型大致整理了下贴出来 普通键部分 F ...

  8. Django models中关于blank与null的补充说明

    Django models中关于blank与null的补充说明 建立一个简易Model class Person(models.Model): GENDER_CHOICES=( (1,'Male'), ...

  9. Django Models的数据类型汇总

    https://blog.csdn.net/devil_2009/article/details/41735611 Django Models的数据类型 汇总 AutoField IntegerFie ...

  10. Django - models.py 应用

    Django - models.py 应用 编写 models.py 文件 from django.db import models # Create your models here. class ...

随机推荐

  1. Entity FrameWork 单表对多实体

    一个影片信息Clips表,四个字段:clipId,clipName,fileSize,fileName 方案一: [Table("Clips")] public class Cli ...

  2. 通过分析iframe和无阻塞脚本关系能让我们更懂iframe

    在我上篇文章里,我提到一种使用iframe完成无阻塞脚本加载的方式,因为我对iframe的偏见很大,所以上篇文章里我没有展开讨论这个问题. 文章发表后有位网友问了我这样一个问题,下面是他问题的原文,如 ...

  3. js实现快速排序

    非原创: var quickSort = function(arr){ if(arr.length<=1){return arr;} var pivotIndex = Math.floor(ar ...

  4. JavaScript思维导图—函数基础

    JavaScript思维导图-来自@王子墨http://julying.com/blog/the-features-of-javascript-language-summary-maps/

  5. [ZigBee] 13、ZigBee基础阶段性回顾与加深理解——用定时器1产生PWM来控制LED亮度(七色灯)

    引言:PWM对于很多软件工程师可能又熟悉又陌生,以PWM调节LED亮度为例,其本质是在每个周期都偷工减料一些,整体表现出LED欠压亮度不同的效果.像大家看到的七色彩灯其原理也类似,只是用3路PWM分别 ...

  6. SVNServer迁移

    本文主要记录SVNServer从windows系列迁移到Centos的过程,以下几篇文章已经描述的很好了,本文就不再赘述. 注意问题: 配置权限时空格问题:包括前面不能有空格,=两边有空格等. 参考链 ...

  7. Oracle日期语言修改

    -- value带有两个参数,第一个指下限,第二个指上限,将会生成下限到上限之间的数字,但不包含上限.select ceil(dbms_random.value(1000,9999)) from du ...

  8. 阿里云主机(aliyun-Linux) x64安装Redis详解

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/97.html?1455870336 如何在Linux​上安装Redis呢, ...

  9. Atitit usrQBF2312 命名空间pkg 以及 api命名 spec规范

    Atitit usrQBF2312 命名空间pkg 以及 api命名 spec规范 简化英文1 常用类库sdk的命名单词统计表1 简化时间规则1 Namsspace nam spec,参照java . ...

  10. React(一)基础点

    prop实例 <div id="app"></div> <script src="bower_components/react/react. ...