整理几个月的收获--(2)Django框架 各种小技巧

1.  charge_count = Charges.objects.filter(bill_month=bill_month, \
        charge_type__in=charge_type_list).count()

首先,charge_type__in=charge_type_list   __in,后面,需要等于一个列表。  django的model可以直接使用 .count()


2.    怎么得到一个查询结果 list形式?

 contract_id_list=Quotes.objects.filter(bu=bu).distinct().values_list('contract_id', \
    flat=True)

.values_list('contract_id',flat=True) 这样可以得到数据中的一列,注意数据类型必须是,queryset,一定要写flat=True,如果为False得到的结果是一个元组的list [(11,),(222,)]

.distinct() 相当于数据库中的去重


3.Charges.objects.filter(**args)   args={}字典中限定很多条件。就可以得到特定的charges中的数据。


4.

fees = Fee_details.objects.filter(charge= charge.id).update(charge_check_status=1)  

查到数据中的某一条,修改某一列的值,相当于mysql中的where update


5.   启用事务处理

 transaction.commit()  提交与回滚
 transaction.rollback()


6.  当需要对 models数据,求交集或并集 ,如果是同意数据表,可使用 | 管道符表示并集,&表示交集


7.  

able_contracts_later = Contracts.objects.extra(where=["contract_stop_time!=start_time"]).filter( \
    contract_stop_time__lt = bill_start_date,charged=0).exclude(id__in=contract_id) 

.extra() 相当于嵌套了sql到 model中。

.exclude()相当于 not in ,filtter 相当于 in


8. #插入.

    if len(result_log_obj) == 0:
        result_log_obj = Bill_Result_Log(
            contract_id=contract_item.id,
            contract_no=contract_item.contract_no,
            month=charge_month,
            log_type=log_type,
            result=bill_result,
            status=bill_status,
            create_time=datetime.datetime.now(),
            update_time=datetime.datetime.now(),
        )
        result_log_obj.save()
    #更新.
    else:
        result_log_obj[0].result = bill_result
        result_log_obj[0].status = bill_status
        result_log_obj[0].update_time = datetime.datetime.now()
        result_log_obj[0].save()



9.{% load filter2 %} 将这个加载到 tags -->tempaltes-->filter2

def format_bill_type_cn(key):
    dict = bills()
    return dict.bill_type_cn.get(key,key)
register.filter('format_bill_type_cn',format_bill_type_cn)

这样就可以在前端做过滤了





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值