django - Django查询获取所有A记录和B记录
问题描述
我的 Django 项目有一个多对多的关系Doctor
——Speciality
我试图只列出带有医生记录的专业,以允许用户请求预约。
刚才我有这个
context['specialities'] = [s for s in Speciality.objects.all() if s.doctor_set.all()]
但这不是一个优雅的解决方案。我只想列出具有活跃 (is_active=True) 医生的专业。
如何添加 is_active 过滤器?
更新!在这里。
[s for s in Speciality.objects.all() if s.doctor_set.filter(is_active=True)]
它有效,但它仍然是一个不优雅的解决方案。任何可以解决问题的好查询?
更新!在这里。模型。
class Speciality(models.Model):
name = models.CharField(max_length=64)
class Doctor(models.Model):
name = models.CharField(max_length=64)
specialities = models.ManyToManyField(Speciality)
is_active = models.BooleanField(default=True)
解决方案
简单地,
speciality_qs = Speciality.objects.filter(doctor__is_active=True).distinct()
推荐阅读
- vbscript - 无法让 VBScript 列出安装在 32 位文件夹下的程序
- outlook - Office 365 日历集成
- python - 并排加入二维列表
- websphere - WebSphere MQ:是否可以在集群中定义 FIFO(先进先出)?
- c++ - 使用循环创建类对象
- node.js - 选择多个复选框在 Puppeteer 无头浏览器中不起作用
- flutter - PaintContext:无法用圆角剪辑孩子
- c# - 如何使用 C# 中的 name 属性以 asp.net 形式获取所有项目/控件
- wpf - WPF:最小化 System.Windows.Window 的状态
- powershell - 在 powershell Invoke-Expression 中使用 cmd 管道