django模型之F对象Q对象

  • A+
所属分类:django

F对象:

F()允许Django在未实际连接数据库的情况下具有对数据库字段值的引用。通常情况下我们在更新数据时需要先从数据库里将数据取出放在内存,然后编辑属性,在提交。

如传统方法

order = Order.object.get(orderid='123')
order.amount += 1
order.save()

F方法

from django.db.models import F
order = Order.object.get(orderid='123')
order.amount = F('amount') - 1
order.save()

通常可以用来批量更新原始值的增删,如批量加积分

Q对象(对对象的复杂查询)

Q对象(django.db.models.Q)可以对关键字参数进行封装,从而更好的应用多个查询。可以组合使用&(and),|(or),~(not)操作符,当一个操作符用于两个Q对象,它产生一个新的Q对象。

范例:

Order.object.get(
    Q(ordername__startswith='who'),
    Q(create_time=date(2016,10,2)) | Q(create_time=date(2016,10,6))
)

相当于:

SELECT * FROM polls WHERE ordername LIKE 'who%'
AND (create_time = '2016-10-2' OR create_time = '2016-10-6')
django模型之F对象Q对象
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: