码农行者 码农行者
首页
  • Python

    • 语言特性
    • Django相关
    • Tornado
    • Celery
  • Golang

    • golang学习笔记
    • 对比python学习go
    • 模块学习
  • JavaScript

    • Javascript
  • 数据结构预算法笔记
  • ATS
  • Mongodb
  • Git
云原生
运维
垃圾佬的快乐
  • 数据库
  • 机器学习
  • 杂谈
  • 面试
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

DeanWu

软件工程师
首页
  • Python

    • 语言特性
    • Django相关
    • Tornado
    • Celery
  • Golang

    • golang学习笔记
    • 对比python学习go
    • 模块学习
  • JavaScript

    • Javascript
  • 数据结构预算法笔记
  • ATS
  • Mongodb
  • Git
云原生
运维
垃圾佬的快乐
  • 数据库
  • 机器学习
  • 杂谈
  • 面试
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Python

    • 语言特性

    • Django

      • Django 简单入门及最佳实践
      • Django学习笔记-url、视图
      • Django学习笔记-模型(1)模型的定义
      • Django学习笔记-模型(2)模型的操作
        • 二、模型的操作(QuerySets)
          • 1、模型操作基础
          • 2、模型的操作
          • 2.1 对象创建:
          • 2.2 对象更新:
          • 2.3 删除对象:
          • 参考:
      • Django学习笔记-模板
      • Django 文章整理- 学习路径总结
      • Django 3.0 异步试用分享
      • Django 3.2 新功能尝鲜
      • Django admin 定制案例
      • Django 三个异步使用的案例
      • Django学习笔记- Class View
      • django 相关命令总结
      • django form表单的数据 select 值更新问题
      • Django自定义管理器(objects)后遇到的问题
      • django signal 使用总结
      • 单文件 Django 服务构建
      • 使用 supervisor 来监控 django celery
      • Django 中如何使用 sass
      • Django uwsgi 启动问题 unavailable modifier requested 0
      • Django uwsgi 启动问题 ImportError No module named os
    • Best.Practices.for.Django

    • Djangorestfulframework

    • Celery

    • Tornado

    • Flask

    • FastApi

    • virtualenv

  • Golang

  • Javascript

  • 开发语言
  • Python
  • Django
DeanWu
2015-11-13
目录

Django学习笔记-模型(2)模型的操作

# 二、模型的操作(QuerySets)

# 1、模型操作基础

常用接口方法

  • all(): 返回一个包含模式里所有数据记录的结果集queryset
  • filter():返回一个包含符合指定条件的模型记录的queryset
  • exclude():和filter相反 查找不符合条件的那些记录
  • get():获取单个复核条件的记录(没有找到或有超过一个结果都会抛出异常)
  • order_by(): 排序 queryset的查询及符号
queryset.distinct 
queryset.values()
quetyset.values_list()
queryset.select_related()
queryset.filter(title__gt='123')
querySet.distinct()  #去重复
__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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

实例

>>> Publisher.objects.filter(country="U.S.A.", state_province="CA")
[<Publisher: Apress>]
# 逗号表示,and
>>> Publisher.objects.filter(name__contains="press")
[<Publisher: Apress>]
1
2
3
4
5

# 2、模型的操作

# 2.1 对象创建:

>>> p = Publisher(name='Apress',
...         address='2855 Telegraph Ave.',
...         city='Berkeley',
...         state_province='CA',
...         country='U.S.A.',
...         website='http://www.apress.com/')
>>> p.save()
1
2
3
4
5
6
7

# 2.2 对象更新:

方法1:

>>> Publisher.objects.filter(id=52).update(name='Apress Publishing')
# update()方法会返回一个整型数值,表示受影响的记录条数。
1
2

方法2:

>>> pub= Publisher.objects.filter(id=52).first()
>>> pub.name = 'Apress Publishing'
>>> pub.save()
1
2
3

注:1方法更优,2方法会更新publisher 的所有字段,所以效率低。

# 2.3 删除对象:

单条

>>> p = Publisher.objects.get(name="O'Reilly")
>>> p.delete()
>>> Publisher.objects.all()
[<Publisher: Apress Publishing>]
1
2
3
4

多条

>>> Publisher.objects.filter(country='USA').delete()
>>> Publisher.objects.all().delete()
>>> Publisher.objects.all()
[]
1
2
3
4

三、模型的迁移

# todo

四、模型的高级特性

# todo 

五、其他

# todo 

# 参考:

https://docs.djangoproject.com/en/1.8/topics/db/queries/ (opens new window)

#Django#Django-model
上次更新: 2023/03/28, 16:27:19
Django学习笔记-模型(1)模型的定义
Django学习笔记-模板

← Django学习笔记-模型(1)模型的定义 Django学习笔记-模板→

最近更新
01
chromebox/chromebook 刷bios步骤
03-01
02
redis 集群介绍
11-28
03
go语法题二
10-09
更多文章>
Theme by Vdoing | Copyright © 2015-2024 DeanWu | 遵循CC 4.0 BY-SA版权协议
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式