064:ORM查询条件详解-in和关联模型查询

ORM查询条件详解-in和关联模型查询:

in:
提取那些给定的 field 的值是否在给定的容器中。容器可以为 list 、 tuple 或者任何一个可以迭代的对象,包括 QuerySet 对象。示例代码如下:

result = Article.objects.filter(id__in=[1,4,5])

以上代码在翻译成 SQL 语句为如下:

SELECT `article`.`id`, `article`.`title`, `article`.`content`, `article`.`category_id` FROM `article` WHERE `article`.`id` IN (1, 4, 5)

实例截图如下:

当然也可以传递一个 QuerySet 对象进去。示例代码如下:

    # 所有标题中包含fuck的分类:
    articles = Article.objects.filter(title__icontains='fuck')
    results = Category.objects.filter(article__in=articles)
    for item in results:
        print(item)
    print("#########以下是对应的SQL语句#########")
    print(results.query)

以上代码的意思是获取那些文章标题包含 hello 的所有分类。将翻译成以下 SQL 语句,示例代码如下:

SELECT `category`.`id`, `category`.`name` FROM `category` INNER JOIN `article` ON (`category`.`id` = `article`.`category_id`) WHERE `article`.`id` IN (SELECT U0.`id` FROM `article` U0 WHERE U0.`title` LIKE %fuck%)

具体截图如下:

related_query_name的书写方式:

 

 

 

转载于:https://www.cnblogs.com/zheng-weimin/p/10230245.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值