python - 如果相关项目的 COUNT 个,您如何编写 Django 查询条件?
问题描述
我正在使用 Django 和 Python 3.7。我有这两个模型,通过外键相互关联......
class Website(models.Model):
objects = WebsiteManager()
path = models.CharField(max_length=100)
class Article(models.Model):
website = models.ForeignKey(Website, on_delete=models.CASCADE, related_name='articlesite')
title = models.TextField(default='', null=False)
url = models.TextField(default='', null=False)
created_on = models.DateTimeField(db_index=True, default=datetime.now)
我想编写一个 Django 查询,它返回有 100 多篇文章与之相关的网站。在 PostGres 中,我可以编写这个查询
select w.id, count(*) FROM website w, article a where w.id = a.website_id group by w.id;
但我不清楚如何使用 Django 查询来做到这一点。如果是 COUNT 函数,我该如何编写查询条件?
编辑:
我修改了查询以添加条件...
qset = Website.objects.annotate(articlesite_count=Count('articlesite')).filter(
articlesite__edited_date__null=True,
articlesite_count__gte=100)
但现在这会导致错误
Unsupported lookup 'null' for DateTimeField or join on the field not permitted.
解决方案
from django.db.models import Count
Website.objects.annotate(articlesite_count=Count('articlesite')).filter(articlesite_count__gte=100)
更新-1
from django.db.models import Count
Website.objects.filter(articlesite__edited_date__isnull=True).annotate(
articlesite_count=Count('articlesite')).filter(
articlesite_count__gte=100)
推荐阅读
- version-control - 你如何指定你的 Swift 包的版本?
- html - 如何在scriptlet中获取html:select值
- word - 仅匹配大写单词
- sql - 从字符串列 bigquery 过滤数组元素
- java - 变量结果可能尚未初始化”
- java - Netbeans 条件字段断点 - 检查新分配的值
- c++ - Core 0 和 Core 1 Arduino——不想重启 Core 0 中的变量
- azure - 如何使 Microsoft 单租户与 STRAPI 一起工作
- python - 从使用 React 和 jQuery 构建的网站中抓取网页
- go - 来自 medium.com 的 Golang 字符串枚举