django-orm中F对象的使用

概念

class F

F()是代表模型字段的值,也就是说对于一些特殊的字段的操作,我们不需要用python把数据先取到内存中,然后操作,在存储到db中了。

字段+1(加减乘除运算)

  1. 一般情况
order = OrderList.objects.get(id=‘1‘)
order.amount += 1
order.save()
  1. 使用F(一句话搞定)
OrderList.objects.filter(id=‘1‘).update(amount=F(‘amount‘) + 1)
时间: 2024-10-08 17:55:30

django-orm中F对象的使用的相关文章

[django]django-orm中F对象的使用

django-orm中F对象的使用 前言 django文档中有一节是 Query-related classes,说 的是关联查询,1.7新加上去的,这里的关联是字段的关联,而不是表之间的关联. 表关联中主要用的是3个对象 F(), Q(), 和Prefetch(),其中Prefetch是1.7新加入的,其他两个是之前版本就有的.之前有个需求是比较一张表里的两个时间字段,用到过F这个对象,今天再看djangocon的ppt时候又发现了一些新的用法,于是查询了下文档,小结一下. 概念 class

django orm中 get 与filter的区别

django orm中 get 与filter的区别: 以前误以为get与filter的区别仅仅是filter返回多条,而get仅支持一条记录,直到使用related_name属性 才发现,两者的差异远不止如此,最本质的区别是 filter返回的值是一个queryset对象, 而get 返回值是一个定义的model对象, 使用get 返回的结果去访问子表对象可以成功,而使用filter就会出错, 是因为queryset 对象没有realtaed_name属性,无法回溯到子表

[Django]orm中的外键级联删除

这里的系统环境为django1.6   os为win7 今天有个需求说的是添加一个地区表,然后用外键和几个非常重要的实体表来做关联(地区表作为其他表的外键),写完地区的删除操作的时候,测试了下代码,功能正常.可是眼睛移动到控制台输出的时候傻了 connexesql ->DELETE FROM `mngm_device` WHERE `mngm_device`.`area_id` IN (%s, %s, %s) connexesql ->DELETE FROM `ad_ad` WHERE `ad

Django ORM的F Q和extra操作

orm的F功能 假设数据库有一个员工表,表中的年龄都自加"1",这里就需要到orm的F功能,如下面的代码: from django.db.models import F#首先要导入这个F模块 models.Uinfo.objects.all().update(age=F("age")+1)#这里的F功能后面的age,它就会让数据表表中的age这列+1 F 就是用来更新获取原来值的功能 orm的Q功能 数据库的查询条件我们可以使用filter,在filter里面的可以

django ORM中的复选MultiSelectField的使用

在django ORM的使用中,经常会出现选择的情况,例如: class person(odels.Model): sex_type = (('male',u'男'), ('female',u'女')) sex = models.CharField(u"性别", choices=sex_type,max_length=32) 但并不是所有的选择都是只有一个结果的,例如 class person(odels.Model): language_choices= (('chinese',u'

django ORM中的RelatedManager(关联管理器)

关联管理器应用在 一对多的表 或者 多对多的表 多对多表中的用法: 在多对多的表中 正向查询 #基于对象的查询 #正查 # author_obj = Author.objects.get(id=1) # print(author_obj) #<Author object: 1 吴晓波> # print(author_obj.book_set.all()) #出版过的所有的书 <QuerySet [<Book: 小王子>, <Book: 哈利波特>]> 在反向

Django ORM中常用字段和参数

Django ORM 常用字段和参数 常用字段 AutoField int自增列,必须填入参数primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647.(一般不用它来存手机号(位数也不够),直接用字符串存,) CharField 字符类型,必须提供max_length参数, max_length表示字符长度. 这里需要知道的是Django中的CharFiel

django ORM中models的字段以及参数

字段: AutoField(Field)         - int自增列,必须填入参数 primary_key=True     BigAutoField(AutoField)         - bigint自增列,必须填入参数 primary_key=True         注:当model中如果没有自增列,则自动会创建一个列名为id的列         from django.db import models         class UserInfo(models.Model):

Django ORM 之F、Q查询与事务

内容目录 一.F.Q查询 二.事务 三.only与defer 一.F.Q查询 """ Product表中的数据: 1 橡皮 2 2000 3000 2 铅笔 3 12 200 3 华为保时捷 18000 30 23 4 索尼A6000 3680 24 12 """ # 查询卖出数大于50的商品 # res = models.Product.objects.filter(maichu__gt=50) # <QuerySet [<Prod

django ORM中的表关系

多对一: 为了方便理解,两个表之间使用ForeignKey连接时,使用ForeignKey的字段所在的表为从表,被ForeignKey连接的表为主表. 使用场景:书和出版社之间的关系,一本书只能由一个出版社出版,一个出版社却可以出版很多书 实现方式:一对多或者说多对一,在Django中是使用ForeignKey实现的,下面是例子: class Publisher(models.Model): id = models.AutoField(primary_key=True) name = model