首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >筛选多对一关系,在条件下排除孩子

筛选多对一关系,在条件下排除孩子
EN

Stack Overflow用户
提问于 2018-02-28 11:47:50
回答 1查看 58关注 0票数 2

我与类别和产品有一对多的关系,类别和产品有活动的字段,如果它们中的任何一个不活动,我想从列表中排除它们。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
categories = Category.objects.filter(is_active=True)

但是现在类别可以有许多产品,其中一些是非活动的,我如何从所有类别中过滤和排除非活动的产品?

型号:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Category(MPTTModel):
    name = models.CharField(max_length=50, blank=False, unique=True)
    is_active = models.BooleanField(default=True)
    parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children', db_index=True)   

class Product(models.Model):
    name = models.CharField(max_length=50, blank=False, unique=True)
    is_active = models.BooleanField(default=True)
    category = TreeForeignKey('Category', on_delete=models.CASCADE, null=True, blank=True, db_index=True)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-28 11:59:27

如果你需要过滤相关的产品,你可以使用带有Prefetch对象的prefetc_related

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.db.models import Prefetch
categories = Category.objects.filter(is_active=True).prefetch_related(Prefetch('product_set', queryset=Produc.objects.filter(is_active=True)))

在本例中,对于来自categories的每个类别,此代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
category.product_set.all()

将只返回激活的产品。此外,这个查询集不会命中DB,因为第一个查询将缓存相关产品。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49028854

复制
相关文章
数据库在一对一、一对多、多对多怎么设计表关系
那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢?
Java学习123
2021/12/28
5.1K0
Django 标签筛选的实现代码(一对多、多对多)
Video_Type = models.CharField(max_length=50)
用户2323866
2021/07/13
1.8K0
Hibernate之关联关系映射(一对多和多对一映射,多对多映射)
别先生
2018/01/02
4.7K0
Hibernate之关联关系映射(一对多和多对一映射,多对多映射)
Hibernate 中 一对多、多对一、 关联关系的 配置
多对一:(街道→区县) * TBLJd.java 类* public class TblJd implements java.io.Serializable { // Fields private Integer jdid; private TblQx tblQx; private String jd; private Set tblFwxxes = new HashSet(); ...... } TblJd.hbm.xml: <cla
qubianzhong
2018/08/10
3.1K0
hibernate 一对一,一对多,多对多关联关系使用
一对一 如果我们只是单纯的在两个实体类中分别加上@OneToOne注解,会发现两张表都分别引入了对方的主键作为外键。明显的数据冗余,毕竟关系不用双方存储。 利用mappedBy属性,指明关系由哪一方维护。
用户5166330
2019/04/16
5.3K0
hibernate 一对一,一对多,多对多关联关系使用
多表间的关系-一对多-多对多-一对一-外键约束
现实生活中,实体与实体之间肯定是有关系的,比如:老公和老婆,部门和员工,用户和订单、订单和商品、学生和课程等等。那么我们在设计表的时候,就应该体现出表与表之间的这种关系!表和表之间的关系分成三种:
Devops海洋的渔夫
2022/01/17
6.2K0
多表间的关系-一对多-多对多-一对一-外键约束
[译] 如何用 Room 处理一对一,一对多,多对多关系?
将数据拆分为相关联的表,并以有意义的方式将数据组合在一起 是设计关系型数据库的重要部分。从 Room 2.2 (现已稳定)开始,通过 @Relation注解,我们支持了表之间所有可能的关系:一对一,一对多,多对多 。
路遥TM
2021/08/31
3.7K0
SQLAlchemy学习-9.一对多和多对一关系
前言 一对多和多对一关系 一对多关系 一对多关系表设计,一个Parent类关联多个Child类 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine, Column, Integer, String, ForeignKey from sqlalchemy.orm import relationship # 拼接配置dialect + driver://username:pa
上海-悠悠
2022/08/26
3.3K0
SQLAlchemy学习-9.一对多和多对一关系
sql中一对多,多对一,一对一关系的解析
1、一对多:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里班主任和学生的关系就是一对多。
贵哥的编程之路
2022/06/20
2.6K0
详解Mybatis一对多、多对一、多对多
是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。简单说来就是关系型数据库用了选择、投影、连接、并、交、差、除、增删查改等数学方法来实现对数据的存储和查询。可以用SQL语句方便的在一个表及其多个表之间做非常复杂的数据查询。安全性高。
utopia
2023/03/21
1.5K0
MyBatis 详解(一对一,一对多,多对多)
1、什么是MyBatis?   MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,
IT可乐
2018/01/04
5.2K0
MyBatis 详解(一对一,一对多,多对多)
数据库表关系之-多对多关系
本章内容针对tortoise-orm进行多对多关系的数据分析 图片 ---- 图片 简单的多对多关系介绍 如上ER图中看到了我们的三张表:分别是access、role、user(user这张表我没放上去). 多对多关系: role角色表的一条记录能够对应另外一张user用户表中的多条记录,同时user表中的一条记录也能对应role表中的多条记录,被称之为我们的多对多关系。 在tortoise-orm的ManyToManyRelation关系中,默认是使用pk字段作为关联字段的 class M
Yuou
2022/09/26
3.1K0
数据库表关系之-多对多关系
Hibernate映射多对多关联关系
在Hibernate中,多对多关联关系(Many-to-Many relationships)是指两个实体类之间的一种关系,其中一个实体类可以与多个另一个实体类相关联,而同样一个实体类也可以与多个另一个实体类相关联。例如,在一个公司中,一个员工可能会在不同的项目中工作,而同样一个项目也可能需要多个员工协同完成。在ORM框架中,多对多关系的映射可以使用中间表、双向一对多关系和关联实体类等多种方式实现。
堕落飞鸟
2023/05/16
1.3K0
oracle基础|数据库模型|实体-关系图(E-R图)|什么是一对一、一对多、多对多
系统设计中一个重要的环节就是数据库设计,数据库设计的时候需要先进行数据建模(实体关系图 E-R图),数据建模的依据就是前期所做的需求分析
小小鱼儿小小林
2021/12/28
8.5K0
mybatis 详解(七)------一对一、一对多、多对多
  前面几篇博客我们用mybatis能对单表进行增删改查操作了,也能用动态SQL书写比较复杂的sql语句。但是在实际开发中,我们做项目不可能只是单表操作,往往会涉及到多张表之间的关联操作。那么我们如何
IT可乐
2018/01/04
5.8K0
mybatis 详解(七)------一对一、一对多、多对多
多对一和一对多
1.UserMapper.xml代码 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybat
2020/10/23
1.1K0
Sequelize 系列教程之一对多模型关系
Sequelize 是一个基于 Promise 的 Node.js ORM,目前支持 Postgres、MySQL、SQLite 和 Microsoft SQL Server。它具有强大的事务支持,关联关系、读取和复制等功能。在阅读本文前,如果你对 Sequelize 还不了解,建议先阅读 Sequelize 快速入门 这篇文章。
阿宝哥
2019/11/06
12.3K0
数据库(三)--多对多,一对多,一对一
那么,我们要是想查询python是由那几家出版社出版的(虽然一般只是一家) ,我们可以这样做:
西西嘛呦
2020/08/26
1.3K0
Laravel多对多关系详解【文章 - 标签】
今天弄了一天的关于文章的功能,其中主要卡在文章与标签的多对多的关系纠结中。卡了半天,终于算是解决了,不是很完美,但可以。
无道
2019/11/13
1.8K0
Laravel多对多关系详解【文章 - 标签】
MongoDB 多对多关系的简单示例
例如文章的标签,一篇文章可能包含多个标签,一个标签也会对应多篇文章 这是一个多对多的映射关系,在sql中我们一般这样设计 Article: Id Title ... Tag: Id Name Relation: ArticleId TagId 通过表的连接,就可以查询出我们想要的各种数据 那么,如果用MongoDB的思想,该如何设计这种关系呢? 有一个关键点首先要知道:MongoDB中不支持文档的连接操作,所以就不能按照sql的思路来设计 设计示例 下
dys
2018/04/02
3.3K0

相似问题

SQLAlchemy -在一对多的关系中过滤孩子

12

Django多对一关系筛选集

12

一对多的关系,排序和过滤孩子

10

sql筛选多对多关系

51

在一对多的关系中按孩子的价值排序

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文