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)
这样就可以在前端做过滤了