zoukankan      html  css  js  c++  java
  • [重要] Django 多条件多表查询实例问题

    当时想做一个多条件查询,但是对于要查询的信息,是分布在不同的表里,这就涉及到了多表查询问题。

    DjangoBook里提到了一些查询的方式,但是不够全面,就去百度搜了下。

    当去网上百度搜多表查询,或多条件查询时,都能搜到,但是相对较综合点的信息,还是比较少。但是为了实现功能,

    也思考了不少。下面贴上一些搜集来的资料。

    关于多条件查询

    data = model.objects.filter(条件1)
    if a==4:
        data = data.fiter(条件2)
    if b==4:
        data = data.filter(条件3)
    

      

    kwargs = {}
    if var1 != 'NONE':
       kwargs['field1'] = var1
    if var2 is not None:
       kwargs['field2'] = var2
    if var3 is not None:
       kwargs['field3'] = var3
    if var4 is not None:
       kwargs['field4'] = var4
    quest = model.objects.filter(**kwargs)
    

      

    # 获取动态过滤调价
    def getKwargs(data={}):
         kwargs = {}
         kwargs['state'] = True 
         for (k , v)  in data.items() :
            if v is not None and v != u'' :
                     kwargs[k] = v          
            return kwargs
    

      

    searchCondition = {'name__icontains' : name ,....}
    kwargs = utils.getKwargs(searchCondition)
    model_set = Model.objects.filter(**kwargs)
    

      

    关于多表查询

    A表作为B表的外键,当通过B表查询A表时候,可以通过__(两个下划线)的方式过滤A表的内容

    基本有这两个知识,综合起来就可以进行多表条件查询了。

    然后是一些自己的代码,就不发了。

  • 相关阅读:
    LeetCode 18. 4Sum (四数之和)
    开运算、闭运算、形态学梯度、顶帽、黑帽
    膨胀和腐蚀
    四种滤波方式
    关于平滑处理及图像滤波与滤波器
    27、简述redis的有哪几种持久化策略及比较?
    26、redis中默认有多少个哈希槽?
    25、如何实现redis集群?
    大聊Python----Select解析
    大聊Python----IO口多路复用
  • 原文地址:https://www.cnblogs.com/pythonClub/p/9932245.html
Copyright © 2011-2022 走看看