发现我改的字段更新了,但是唯独 update_time 字段没更新。...然后我把 update() 方法改成 update_or_create() 方法又跑了一遍,因为我上次把 update_or_create() 改成了 update(), update_time 字段更新了...") create_time 在第一次新增数据时创建,之后便不再改变,update_time 会在每次数据更新时更新。...但,update_time 并非每次都更新,比如使用上文提到的 update_or_create() 方法会更新,save() 方法也会更新。因为这两个方法都是走的 Django ORM。...而更适用于批量操作的 update() 方法则是直接执行数据库 SQL,不走 Django ORM,所以 update_time 也就得不到更新。那要想更新怎么办呢?
好处是可以防止重复插入;那么坏处就是插入速度要相对慢些,因为它要先查询。...查询地址中包含'北'字的出版社 Publisher.objects.filter(address__contains='北') # 还有很多不一一例举 # 如果上述条件的前面有个字母 'i', 表示不区分大小写...因为上限从 0 开始可以忽略不写,所以它等同于 [0:3]。查询出来结果没有包含上限的值,即下标为 3 的值。[:3] 只查询下标为 0, 1 ,2 的数据。...4 更新数据 更新数据操作,一般是在查询数据后才执行。...4.1 更新单条数据 更新单条数据也有两种方法,其中一种的用法跟使用方法 2 创建对象类似,另一种则是使用 update_or_create() 。
5 插入与查询数据 Author 和 Book 表已经新建成功了。你可能有这样的疑惑。我要怎么往该表插入数据呢?听我慢慢道来。 在 Django 中,一个模型类对应一个数据库的表。...看到 意味着成功创建对象,即成功向数据库插入一条数据。 2)查询数据 同样在 python 终端下,执行下面的命令。 ?...而一旦我们建立好数据模型,Django 会自动为我们生成一套数据库抽象的API。这样就大大方便我们创建、检索、更新和删除对象。 假如现在有个需求,我们需要查询数据库中所有的作者并打印出作者的姓名。...5)使用 QuerySet 更新数据 A、单个 object 更新, 适合于 .get(), get_or_create(), update_or_create() 等得到的 obj,和新建很类似。...B、批量更新, 适用于 .all() .filter() .exclude() 等后面 ?
11. none() 调用none()将创建一个不返回任何对象的查询集,并且在访问结果时不会执行任何查询。...减少为只有两个查询: >>> Pizza.objects.all().prefetch_related('toppings') 这意味着现在每次self.toppings.all()被调用,不会再去数据库查找,而是在一个预取的...4. update_or_create() update_or_create(defaults=None, **kwargs) 类似前面的get_or_create()。...update_or_create方法尝试通过给出的kwargs 去从数据库中获取匹配的对象。 如果找到匹配的对象,它将会依据defaults 字典给出的值更新字段。...和get_or_create()一样,这个方法也容易导致竞态条件,如果数据库层级没有前置唯一性会让多行同时插入。 在Django1.11在defaults中增加了对可调用值的支持。
获取单个对象 def create(self, **kwargs): # 创建对象 def bulk_create(self, objs, batch_size=None): # 批量插入...# batch_size表示一次插入的个数 objs = [ models.DDD(name='r11'), models.DDD(name='r22'...models.UserInfo.objects.get_or_create(username='root1', defaults={'email': '1111111','u_id': 2, 't_id': 2}) def update_or_create...(self, defaults=None, **kwargs): # 如果存在,则更新,否则,创建 # defaults 指定创建时或更新时的其他字段 obj, created...models.DDD.objects.in_bulk(id_list) def delete(self): # 删除 def update(self, **kwargs): # 更新
文章及代码比较基础,适合初、中级人员,高手略过 阅读此篇文章你可以: 获取一个Django实现增删改查的案例源码 了解数据加密的使用场景和方法以及如何在Python3中使用 背景介绍 DBA需要维护一张密码表...代码中用到了Django的一个QuerySet API可能部分人没有用过update_or_create,这里详细介绍下 update_or_create(defaults=None, **kwargs...) 看到方法的命名大概也能猜出来这个方法的主要作用就是更新或者创建model数据,那么究竟什么情况下更新?...主要根据传入的**kwargs来判断,defaults为要更新的数据。...方法返回结果为一个元组(object, created),object为新建或者更新的对象,created为一个布尔值,表示是新建还是更新,True为新建 密码加密 对于密码加密,我们知道加密算法有很多
相关命令 python3 manage.py makemigrations 根据模型生成相关迁移文件 python3 manage.py migrate 根据迁移文件,将表结构更新到数据库中,并在...这个不是SQL标准的一部分,完全由Django处理。 DO_NOTHING:SQL等价物:NO ACTION。...数据表操作 更改数据表 删除数据库表步骤 删除对应的模型类代码 删除migrationd文件夹下面的模型类 删除Django的migrations表中对应的记录 删除数据库表 导入数据 Django...annotate() 使用聚合计数,求和,平均数,raw() 执行原生SQL annotate()对分组后的结果进行统计 Model.objects.get().子表的表名 _set.all() 不返回...更新对象 update(),update_or_create() 更新,更新或创建 删除对象 delete() 使用filter 过滤 其它操作 exists(),count(),aggregate(
根据单个年,月,日,时分秒进行查询 extra 额外操作,实现字典码翻译 select select_params where 和 params order_by 排序 tables 查询哪个表 Django...using() 指定去哪个数据库拿数据 values()获取每行数据为字典格式 values_list() 获取每行数据为元祖 bulk_create()批量创建数据 get_or_create() update_or_create...distinct=True), n=Count('nid') ) ===> {'k': 3, 'n': 4} 不等于 Article.objects.exclude(id=1) F() 我们在做更新的时候...models.UserInfo.objects.get_or_create(username='root1', defaults={'email': '1111111','u_id': 2, 't_id': 2}) update_or_create...() # 如果存在,则更新,否则,创建 # defaults 指定创建时或更新时的其他字段 obj, created = models.UserInfo.objects.update_or_create
auto_now_add=True:插入数据时间 DecimalField max_digits:多少位数 decimal_places:多少位小数,例子(max_digits=4,decimal_places...verbose_name='地址信息' # 表别名复数,用于英文显示 verbose_name_plural=verbose_name # 设置基类,不生成数据表...Course.objects.values('teacher').annotate(vol=Min('volume'))) # raw(),执行原始SQL """不返回...Course.objects.latest()) # earliest() print(Course.objects.earliest()) # in_bulk(), 批量插入数据...() Course.objects.filter(title="Java 系列教程5").update_or_create(title="Java 系列教程5", price=888,
一般情况下,我们在写Django项目需要操作QuerySet时一些常用的方法已经满足我们日常大多数需求,比如get、filter、exclude、delete神马的感觉就已经无所不能了,但随着项目但业务逻辑越来越复杂...这里的读文档不是有业务需求时去查文档,而是要为了阅读文档而阅读文档。...以下也是作为我的文档阅读笔记,我记下了一些我以后可能会用到或者一些技巧性提升的东西,好,不废话,正文开始: 首先,我们假设有以下两个model: class Entry(Model.models):...Entry.objects.create(ip='127.0.0.1', time=, black=False) 6、get_or_create(kwargs) 和 update_or_create...,但要注意,它不能更新外键, 不能更新切片过的queryset以及不能再被切片的set,用法如下: Entry.objects.filter(black=False).update(ip='0.0.0.0
,我们接着往下看 具有auto_now属性字段的更新 我们通常会给表添加三个默认字段 - 自增ID,这个django已经默认加了,就像上边的建表语句,虽然只写了username和is_active两个字段...,速度快 update_or_create:有就更新,没有就创建 ,还有个get_or_create,有就查询出来,没有就创建 obj,created = models.UserToken.objects.update_or_create...queryset类型的数据来调用,返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列 model的实例化对象,而是一个可迭代的字典序列...models.UserInfo.objects.get_or_create(username='root1', defaults={'email': '1111111','u_id': 2, 't_id': 2}) def update_or_create...它运行时立即删除对象而不返回任何值。例如: model_obj.delete() 你也可以一次性删除多个对象。
filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 values...(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列 values_list...# batch_size表示一次插入的个数 objs = [ models.DDD(name='r11'), models.DDD(name='r22'...models.UserInfo.objects.get_or_create(username='root1', defaults={'email': '1111111','u_id': 2, 't_id': 2}) def update_or_create...(self, defaults=None, **kwargs): # 如果存在,则更新,否则,创建 # defaults 指定创建时或更新时的其他字段 obj, created
exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet...,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列 values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列...# batch_size表示一次插入的个数 objs = [ models.DDD(name='r11'), models.DDD(name='r22'...models.UserInfo.objects.get_or_create(username='root1', defaults={'email': '1111111','u_id': 2, 't_id': 2}) def update_or_create...(self, defaults=None, **kwargs): # 如果存在,则更新,否则,创建 # defaults 指定创建时或更新时的其他字段 obj, created
CREATE DATABASE`django_wx` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 1 — 编写模型类 就像java中有mybatis...、hibernate这样的orm框架,django也有将数据库操作语句封装的结果集,可以让我们不用写原生sql就可以操作数据。...from django.utils import timezone from django.db import models # Create your models here. class DB_weatherinfo_base...重新调用沈阳市:后面的时间更新了,即update_or_create没有时候创建已有的数据更新,city=city表示关键字以这个查询,后面的defaults接收一个元祖里面是要更新的字段。...接下来编写all的天气更新方法: class get_weatherinfo_all(APIView): # authentication_classes = [JwtAuthorizationAuthentication
,减少mysqlO 3.8选择需要的字段only 3.9n+1问题 1.创建模型类 打开pay应用的models.py创建模型类 from datetime import datetime from django.db...2) 关于主键 django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。...开头的 Brand.objects.filter(name__startwith='电') 查询品牌名字中以'脑'结尾的 Brand.objects.filter(name__endwith='电') 不区分大小写就在前面...用的时候发出去,可能在这期间数据已经改变了) print(goods)才会发送sql 可以通过print(goods.query)查看发出的sql语句 帮助调试 3.2get_or_create 直接插入数据可能会冲突...id=20,brand_id=1) 首先尝试获取,不存在就创建,可以防止重复 返回(object, True/False) true表示创建成功 false表示数据库已经存在该数据 类似的还有update_or_create
我的 Django 项目里的用户可以发图片。 我想实现一个收藏功能,就是用户可以收藏其他用户发布的图片。...datetime.datetime.now() FavoritePicture.objects.update_or_create(user=user,picture=picture,created_on=created_on) update_or_create...自动确定的 return render_to_response('xxxx',{fav_pics=fav_pics}) Django2.0.8+xadmin2实现在线学习网站,课程、讲师...GitHub地址:https://github.com/xyliurui/OnlineLearningPlatform ;Django版本:2.0.8 更多内容请点击 我的博客 查看,欢迎来访。...机构收藏功能 机构模型增加收藏数更新函数 # 课程机构信息 class CourseOrg(models.Model): ORG_CHOICES = ( ("pxjg",
QuerySet API中有特殊含义(用于关系,包含,不区分大小写,以什么开头或结尾,日期的大于小于,正则等) 也不能有Python中的关键字,name 是合法的,student_name 也合法,...name__contains="abc") # 名称中包含 "abc"的人 Person.objects.filter(name__icontains="abc") #名称中包含 "abc",且abc不区分大小写...更新某个内容 批量更新,适用于 .all() .filter() .exclude() 等后面 (危险操作,正式场合操作务必谨慎) Person.objects.filter(name__contains...update(name='xxx') # 名称中包含 "abc"的人 都改成 xxx Person.objects.all().delete() # 删除所有 Person 记录 单个 object 更新...,适合于 .get(), get_or_create(), update_or_create() 等得到的 obj,和新建很类似。
、更新、删除对象,下文将介绍如何使用这些API(以一个网页应用为例展开) 首先是创建表模型类 先分析一下他们的表关系,会有助于理解下面的内容 from django.db import models...,django 并不会直接执行这个语句,直到你调用了 .save() 方法( .save() 没有返回值) 保存修改的表对象 想要保存一个已经改动过的对象,调用 .save() 方法即可(更新一条记录....save() # 代码运行到这里才会进行数据库操作,真正地更新到数据库!...不!其实它只执行了一次,只在执行最后一行 print(q) 的时候执行了数据库操作。...**kwargs) .exists() .update(**kwargs) .delete() # 不常见的几个 .get_or_create(defaults=None, **kwargs) .update_or_create
varchar 8 继承CharField,所以必须 max_lenght 参数 9 models.DateField 日期类型 date 10 对于参数,auto_now = True 则每次更新都会更新这个时间...;auto_now_add 则只是第一次创建添加,之后的更新不再改变。...你通常不需要直接使用这个字段; 如果你不指定主键的话,系统会自动添加一个主键字段到你的 model....这个例子: FilePathField(path="/home/images", match="foo.*", recursive=True) ...会匹配 /home/images/foo.gif 而不匹配...get_or_create 如果表里面存在不变,关系表里面没有,那样在基础表与关系表都创建 r = h.group_set.get_or_create(name='公关部') print(r) # 3、update_or_create
领取专属 10元无门槛券
手把手带您无忧上云