Django Models相关
Models的相关知识
1. AutoField:自增整数类型。根据 ID 自增长的 Int字段 2. IntegerField:整数类型 3. BigIntegerField:大整数类型。用于数值较大时,类似于IntegerField 4. SmallIntegerField:小整数类型。数值的取值范围较小,受限于数据库的限制 5. BooleanField:布尔值(true/false)类型。 6. CharField:字符串类型。 7. CommaSeparatedInterField:存放以逗号间隔的整数序列 8. DateField:日期类型。datetime.date 实例 9. DateTimeField:日期类型。datetime.datetime 实例 10. EmailField:字符串类型(正则表达式邮箱) 11. FileField:文件类型。 12. FilePathField:文件类型。某个目录中的所有文件名集合 13. FloatField:浮点数类型 14. ImageField:图片文件类型 15. IPAddressField:IP地址类型。字符串形式(比如 "192.0.2.30")表示 16. GenericIPAddressField:IP地址类型。字符串形式(比如 "192.0.2.30"或者"2a02:42fe::4")表示 17. NullBooleanField:类似于BooleanField。允许值为null 18. PositiveIntegerField:和 IntegerField 相似。字段值必须是非负数 19. PositiveSmallIntegerField:和 PositiveIntegerField 类似,但数值的取值范围较小,受限于数据库设置。 20. SlugField:短标签。主要用于基于其他字段的值来自动填充 Slug 字段 21. TextField:和 Charfield 类似。用于存储文本。 22. TimeField:时间类型。datetime.time 实例 23. URLField:URL类型。 24. UUIDField:唯一标识类型。 25. BinaryField:二进制类型 26. Decimal:十进制小数类型 27. ForeignKey:外键类型 28. ManyToManyField:多对多类型 29. OneToOneField:一对一类型
字段选项
1. null=True 数据库中字段是否可以为空 2. blank=True django的 Admin 中添加数据时是否可允许空值 3. primary_key = False 主键,对AutoField设置主键后,就会代替原来的自增 id 列 4. auto_now 和 auto_now_add
auto_now 自动创建---无论添加或修改,都是当前操作的时间
auto_now_add 自动创建---永远是创建时的时间 5. choices
GENDER_CHOICE = (
(u'M', u'Male'),
(u'F', u'Female'),
)
gender = models.CharField(max_length=2,choices = GENDER_CHOICE) 6. max_length 7. default 默认值 8. verbose_name Admin中字段的显示名称 9. name|db_column 数据库中的字段名称 10. unique=True 不允许重复 11. db_index = True 数据库索引 12. editable=True 在Admin里是否可编辑 13. error_messages=None 错误提示 14. auto_created=False 自动创建 15. help_text 在Admin中提示帮助信息 16. validators=[] 自定义错误验证(列表类型) 17. upload-to 上传到哪个位置,更多与image,filepath配合使用
values() 和、vlue_list() 与 all()
# User为Models类
.all()是取得所有列的数据,可以加.values()取出某一列,每一个元素为一个字典:
obj = model.User.objects.filter(name='alex').values('id','email')
# 相当于SQL语句: select id, email from user where name='alex'
queryset -> python,Django的类
[{'id':1},{'id': 2},] values_list(),获取到的元素为一个个元组,也可以加多个参数来获取多列:
obj = model.User.objects.filter(name='alex').value_list('id','email')
相当于SQL语句: select id, email from user where name='alex'
queryset -> python,Django的类
[(1,'1@qq.com'),(2,'alex@11.com'),]
表基本操作
# 增
models.User.objects.create(id='xx', name='xx') 增加一条数据,可以接受字典类型数据 **kwargs
obj = models.User(id='xx', name='xx')
obj.save() # 查
models.User.objects.get(id=123) # 获取单条数据,不存在则报错(不建议)
models.User.objects.all() # 获取全部数据
models.User.objects.filter(name='seven') # 获取指定条件的数据 # 删
models.User.objects.filter(name='seven').delete() # 删除指定条件的数据 # 改
models.User.objects.filter(name='seven').update(gender='0') # 将指定条件的数据更新,均支持 **kwargs
obj = models.User.objects.get(id=1)
obj.name = 'Delav'
双划线操作
用法: # 字段名称 + __ + 关键字 __exact 精确等于 like 'aaa'
__iexact 精确等于 忽略大小写 ilike 'aaa'
__contains 包含 like '%aaa%'
__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以...开头
__istartswith 以...开头 忽略大小写
__endswith 以...结尾
__iendswith 以...结尾,忽略大小写
__range 在...范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
# 获取个数
models.User.objects.filter(name='seven').count() # 大于,小于
models.User.objects.filter(id__gt=1) # 获取id大于1的值
models.User.objects.filter(id__lt=10) # 获取id小于10的值
models.User.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值 # in
models.User.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据
models.User.objects.exclude(id__in=[11, 22, 33]) # not in # contains
models.User.objects.filter(name__contains="ven") # name中包含 ven 的数据
models.User.objects.filter(name__icontains="ven") # icontains大小写不敏感
models.User.objects.exclude(name__icontains="ven") # name中不包含 ven的数据 # range
models.User.objects.filter(id__range=[1, 3]) # 范围between and # 其他类似
startswith,istartswith, endswith, iendswith, # order by
models.User.objects.filter(name='seven').order_by('id') # asc
models.User.objects.filter(name='seven').order_by('-id') # desc # limit 、offset
models.User.objects.all()[10:20] # group by
from django.db.models import Count, Min, Max, Sum
models.User.objects.filter(c1=1).values('id').annotate(c=Count('num'))
Django Models相关的更多相关文章
- Django—models相关操作
一.在django后台admin管理页面添加自己增加的表结构 通过终端命令:python3 manage.py makemigrations, python3 manage.py migrate 我们 ...
- django models 数据库操作
django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...
- django models中的class meta
Django models中的meta选项 通过一个内嵌类 "class Meta" 给你的 model 定义元数据, 类似下面这样: class Foo(models.Model ...
- 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的点查询/跨表查询/双下划线查询
django models 在日常的编程中,我们需要建立数据库模型 而往往会用到表与表之间的关系,这就比单表取数据要复杂一些 在多表之间发生关系的情形下,我们如何利用models提供的API的特性获得 ...
随机推荐
- ROS(一)Topic 通信
ROS系统起源于2007年斯坦福大学人工智能实验室的项目与机器人技术公司Willow Garage的个人机器人项目(Personal Robots Program)之间的合作,2008年之后就由Wil ...
- PostgreSQL 使用总结
1. USING的使用 USING是个缩写的概念:它接收一个用逗号分隔的字段名字列表, 这些字段必须是连接表共有的,最终形成一个连接条件,表示这些字段对必须相同. USING (a, b, c) 等效 ...
- FreeRTOS的信号量和互斥量
1. 理解如下,言简意赅的说,信号量解决同步,互斥量解决竞争. 信号量用于同步,主要任务间和中断间同步:互斥量用于互锁,用于保护同时只能有一个任务访问的资源,为资源上一把锁. 互斥量具有优先级继承,信 ...
- 「日常训练」 Counting Cliques(HDU-5952)
题意与分析 题源:2016ACM/ICPC沈阳现场赛. 这题让我知道了什么是团,不过最恶心的还是这题的数据了,卡了无数次- - 解决方法是维护一个G数组,不能去遍历邻接矩阵.至少我改了这么一个地方就过 ...
- Qt 3D Studio 1.0 Resleased
Qt 这家伙又整出一个新东西了,Qt 3D Studio 1.0 新闻链接:https://blog.qt.io/blog/2017/11/30/qt-3d-studio-1-0-released/ ...
- CSS选择器语法&示例
CSS3 选择器 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. "CSS" 列指示该属性是在哪个 CSS 版本中定义的.(CSS1.CSS2 还是 CSS3.) ...
- 用Anko和Kotlin实现Android上的对话框和警告提示(KAD 24)
作者:Antonio Leiva 时间:Mar 9, 2017 原文链接:https://antonioleiva.com/dialogs-android-anko-kotlin/ 借助Builder ...
- jmeter基础之录制篇
一.前言 jmeter如今被越来越多人喜爱的一款测试工具,相比于loadrunner它体积特轻便.jmeter不仅用来做单接口测试,压测还能做性能,主要是一款开源的,可以写一个你需要的插件功能再添加里 ...
- Python文件操作大全
Python 编程文件操作大全 文件打开模式 打开模式 执行操作 'r' 以只读方式打开文件(默认) 'w' 以写入的方式打开文件,会覆盖已存在的文件 'x' 如果文件已经存在,使用此模式打开将引 ...
- 如何编写 Python 程序
如何编写 Python 程序 从今以后,保存和运行 Python 程序的标准步骤如下: 对于 PyCharm 用户 打开 PyCharm. 以给定的文件名创建新文件. 输入案例中给出的代码. 右键并运 ...