python - 在django中过滤多对多字段的外键?
问题描述
我有一组看起来像这样的 django 模型:
class Profile(models.Model):
attributes
class Package(AuditBaseModel):
name = models.CharField(max_length=128)
active = models.BooleanField(default=True)
class ProfilePackage(AuditBaseModel):
profile = models.ForeignKey(Profile, related_name="profile_packages", on_delete=models.CASCADE)
package = models.ForeignKey(Package, related_name="profile_packages", on_delete=models.PROTECT)
active = models.BooleanField(default=True)
我需要的是从配置文件中过滤包名称的方法。我知道我可以做类似的事情
ProfilePackage.objects.filter(active=True, package__name="Professional").select_related("profile")
这将给我一个包含该包的配置文件的查询集,但我需要将它与其他过滤器结合起来,我希望配置文件模型是顶层。
解决方案
查看您的模型,这应该相当容易。
Profile.objects.filter(profile_packages__active=True, profile_packages__package__name="Professional")
推荐阅读
- ruby-on-rails - 使用 RSpec 在 Rails 控制器中存根/模拟方法的最现代方法是什么?
- c++ - CMake 中未填充 COMPILE_OPTIONS 属性
- c# - UWP ObservableCollection 与图表和按钮的绑定
- docker - wordpress docker compose 到 dockerhub
- swagger - Swagger 生成的 API 没有返回值
- .net - 托管在 Windows 服务中的 Kestrel 的 Windows 身份验证
- javascript - 将 SVG 矢量平铺地图转换为使用 Canvas 时出现问题
- windows - 强制关闭正在运行的 dotnet 进程
- r - 使用函数迭代 tibble 中的列
- javascript - Javascript计算从一年到下一年的变化增加或减少