django

1、related_name django
外键使用
2、指定数据库的表格加入model里面
python manage.py inspectdb CASN CASD > DataWebApp/models.py

3、获取IMAGE_VERSION接口
(1) 序列化
序列化一定要有字段名,因此传入的参数一定是跟这里指定的一致:
Image_Version_list = serializers.ListField(child=serializers.CharField(max_length=10))
(2) 修改view文件返回json文件

def image_version_list(request):

    if request.method == 'GET':
        data = {'Image_Version_list': list(Products.objects.all().values_list("prod_id", flat=True))}
        Image_Version_list = IMAGEVERSIONSerializer(data)
        return Response(Image_Version_list.data)

2、查询接口:
(1)序列化文件中的字段应该是返回的字段,而且名儿都不一样:
考虑:1、汇总的语句可以指定名称:可以哦

>>> Book.objects.aggregate(average_price=Avg('price'))
{'average_price': 34.35}
       2、groupby : value但是这个需要都写上
from django.db.models import Count
Members.objects.values('designation').annotate(dcount=Count('designation'))
在最后加上distinct()用来去除重复项

相当于

SELECT designation, COUNT(designation) AS dcount
FROM members GROUP BY designation
 3、case when:
>>> Client.objects.aggregate(
...     regular=Count('pk', filter=Q(account_type=Client.REGULAR)),
...     gold=Count('pk', filter=Q(account_type=Client.GOLD)),
...     platinum=Count('pk', filter=Q(account_type=Client.PLATINUM)),
... )
{'regular': 2, 'gold': 1, 'platinum': 3}

相当于

SELECT count(CASE WHEN account_type=1 THEN id ELSE null) as regular,
       count(CASE WHEN account_type=2 THEN id ELSE null) as gold,
       count(CASE WHEN account_type=3 THEN id ELSE null) as platinum
FROM clients;

(2)考虑request.data的问题
GET
get请求中参数都会以http://xxx.com/api/getjson?param1=asdf&param2=123
这样的形式拼接在url后面.
在request对象中
request.query_params 中可以获取?param1=32&param2=23形式的参数.
request.query_params 返回的数据类型为QueryDict
QueryDict转为普通python字典. query_params.dict()即可

也可以:

request_data = request.GET.get('param1', '1001')

(3)逻辑问题了:
1、筛选出符合日期的,默认为当天
python获取当天日期:


>>> import datetime
>>> today=datetime.date.today()

date = request.GET.get('date', today)
all_day_data = data.object.all().filte(Q(count_hour_contains=date))

2、按照各种筛选条件进行计算
如果是有,则直接filter and
如果是默认值,Q_list.append()这种想法可以的

#获取值
feature_list = ['version', 'source', 'H265_H264', 'category', 'enc_version', 'transcode_mode']
version=request.GET.get('version', '')
source=request.GET.get('source', '')
H265_H264=request.GET.get('H265_H264', '')
category=request.GET.get('category', '')
enc_version=request.GET.get('enc_version', '')
transcode_mode=request.GET.get('transcode_mode', '')
Q_list = []
#命令筛选
if version:
    Q_list.append(Q(IMAGE_VERSION=version))
if source:
    Q_list.append(Q(IMAGE_VERSION=source))
if H265_H264:
    Q_list.append(Q(IMAGE_VERSION=H265_H264))
if category:
    Q_list.append(Q(IMAGE_VERSION=category))
if enc_version:
    Q_list.append(Q(IMAGE_VERSION=enc_version))
if transcode_mode:
    Q_list.append(Q(IMAGE_VERSION=transcode_mode))

>>> Question.objects.filter(reduce(operator.or_, Q_list))

统计数据:

#总数:
all_day.objects.value('count_hour','trans_count', 'success_count', 'trans_efficiency')aggregate(
trans_count=Sum(count)
success_count=Sum(count, filter=Q(error_code=0))
succ_rate = Sum(count, filter=Q(error_code=0))/Sum(count)
trans_efficiency=Sum(total_trans_duration)/Sum(total_inputfile_duration)
)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值