zoukankan      html  css  js  c++  java
  • Django F对象的使用

    概念

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

    场景

    例1:我们有个统计点击量的字段,每次更新的操作其实就是把字段的值加1.

    一般我们的做法是把这条记录取出来,把相应字段加+1,然后在save,类似下面的代码:

    # Tintin filed a news story!
    reporter = Reporters.objects.get(name='Tintin')
    reporter.stories_filed += 1
    reporter.save()



    当我们使用了F()之后呢? 只需要一行代码
    Reporters.objects.filter(name='Tintin').update(stories_filed=F('stories_filed') + 1)

    不仅代码量少了,而且这是直接在数据中操作,效率也变高了,特别是并发的情况,减少了多线程同时操作带来的隐患。 但是不支持字符串相加的操作


    例2: 一个合同有两个日期,一个叫做终止日期,一个叫做结束日期,现在要筛选出终止日期小于结束日期的合同。
    rom django.db.models import F
    from contracts.models import Contracts
    contracts = Contracts.objects.filter(contract_stop_time__lt=F('end_time'))
    如果没有F对象,就没法直接使用rom来查询。




    使用场景待续.....
  • 相关阅读:
    vb 退出窗口提示
    游戏开发 简介
    gridview 缓存 优化
    Android中Bitmap和Drawable
    解析网络 xml 流程
    vb 检测是否突然断网
    进度条
    网站广告
    android 五大布局
    VB 读写文件
  • 原文地址:https://www.cnblogs.com/haoshine/p/5941428.html
Copyright © 2011-2022 走看看