Django中Q查询及Q()对象
<div id="cnblogs_post_body" class="blogpost-body"> 问题一般我们在Django程序中查询数据库操作都是在QuerySet里进行进行,例如下面代码: >> q1 = Entry.objects.filter(headline__startswith=>> q2 = q1.exclude(pub_date__gte=datetime.date.today())
>> q3 = q1.filter(pub_date__gte=datetime.date.today())
或者将其组合起来,例如: >>q1 = Entry.objects.filter(headline_startswith="What").exclude(pub_date_gte=datetime.date.today()) 随着我们的程序越来越复杂,查询的条件也跟着复杂起来,这样简单的通过一个filter()来进行查询的条件将导致我们的查询越来越长。 Q()对象就是为了将这些条件组合起来。当我们在查询的条件中需要组合条件时(例如两个条件“且”或者“或”)时。我们可以使用Q()查询对象。例如下面的代码 这样就生成了一个Q()对象,我们可以。。例如下面代码就将两个条件组合成了一个 使用上述代码可以使用SQL语句这么理解: 我们可以在,例如下面代码: 对应SQL语句可以理解为: 这样我们 也可以传递多个Q()对象给查询函数,例如下面代码: 。如上面代码使用SQL语句理解将会是: Q()对象可以结合关键字参数一起传递给查询函数,不过需要注意的是要将Q()对象放在关键字参数的前面,看下面代码 <span class="preprocessor">#错误的做法,代码将关键字参数放在了Q()对象的前面。 等方法中的关键字参数查询都是一起进行“AND” 的。 语句),你可以使用 。 () 对象用于封装一组关键字参数。 对象封装一个 查询: 对象可以使用 和 操作符组合起来。 对象上使用时,它产生一个新的 对象。 对象,表示两个 查询的“OR” : 子句: 和 操作符以及使用括号进行分组来编写任意复杂的 对象。 对象可以使用 操作符取反,这允许组合正常的查询和取反() 查询: 、、)都可以传递一个或多个 对象作为位置(不带名的)参数。 对象参数,这些参数的逻辑关系为“AND"。
和关键字参数。 对象)都将"AND”在一起。 对象,它必须位于所有关键字参数的前面。
的用法。
<h3 id="传q对象构造搜索条件" style="margin: 10px 0px; padding: 0px; font-size: 16px; line-height: 1.5; font-family: Verdana,sans-serif;">传Q对象,构造搜索条件 <p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana,sans-serif; font-size: 13.3333px;">
q1.children.((,))
q1.children.((,))
q1.children.((,))
<p class="last"> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |