当前位置: 代码迷 >> 综合 >> Django:多参数的ORM动态查询
  详细解决方案

Django:多参数的ORM动态查询

热度:30   发布时间:2024-02-10 17:16:49.0

前端页面有几个输入框用于搜索数据。用户可以按需填入搜索条件传给后台,后台再按条件查询返回。

查找资料发现orm查询中可以有filter(**dict)这种查询方式,所以有以下查询。

def search_stu_info(request):argument = _getArguments(request)try:name = argument.get("name", "")class_id = argument.get("class_id", "")sno = argument.get("sno", "")kwargs = {}if name:kwargs["name__contains"] = nameif class_id:kwargs["class_id"] = class_idif sno:kwargs["son"] = snostu = Student.objects.filter(**kwargs)data = []for i in stu:data.append(model_to_dict[i])returnDict = {'count': len(data),  # 总数据量'data': json.dumps(data),  # 显示的数据'state': 200,'msg': "success"}return JsonResponse(returnDict, json_dumps_params={'ensure_ascii': False})except Exception as e:traceback.print_exc()return JsonResponse({"state": 500, "msg": "系统出错,请联系管理员", "errMsg": str(e)},json_dumps_params={'ensure_ascii': False})def _getArguments(request):# 获取请求参数if request.method == 'GET':logging.error("收到GET请求")arguments = dict(request.GET)for arg in arguments:if type(arguments[arg]) == type([]):arguments[arg] = arguments[arg][0]else:logging.error("收到POST请求")logging.error("post-body")logging.error(request.body.decode())if "form" in request.content_type:arguments = request.POSTelse:arguments = json.loads(request.body.decode())return arguments