django - Django通过对源进行分组来获取外键记录的计数
问题描述
我有两个模型,
媒体:
class Media(models.Model):
persons = models.ManyToManyField(
Person,
blank=True,
related_name="media",
help_text="Persons identified in the media",
)
reviews = GenericRelation(Review, related_query_name="media")
source = models.ForeignKey(
Source,
on_delete=models.SET_NULL,
blank=True,
null=True,
related_name="media",
help_text="Source for this media",
)
审查:
class Review(models.Model):
"""Represents a review made by an Account on an object
"""
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
review_item = GenericForeignKey('content_type', 'object_id')
reviewer = models.ForeignKey(
Account,
blank=True,
null=True,
on_delete=models.SET_NULL,
help_text="Account of the reviewer",
)
我需要Media
根据没有评论source
的地方进行分组并计数。source
换句话说,我需要计算每个source
与存在没有关系的地方reviews
。
请指教。
解决方案
此查询将为您提供所有Source
带有计数注释的对象,这些对象Media
没有相关Review
from django.db.models import Count
Source.objects.filter(
media__reviews__isnull=True
).annotate(
Count('media')
).values()
推荐阅读
- c# - Applitools + Specflow + Selenium + C#
- python - 用于同时运行多个脚本的 Python 脚本
- javascript - 实时更新 a-sky src 时的问题
- d3.js - d3 JS 版本 6 d3.v6.min.js:2 Uncaught (in promise) TypeError
- python - Flask(flask db init):AttributeError:模块“时间”没有属性“时钟”
- javascript - 错误“无效的带括号的分配模式”背景信息
- sql - SQLPlus INSERT INTO "(USER)"."USERS" (USER_NAME, USER_PASS) < "如何散列密码"
- apache-spark - NameError:名称“平均”未定义
- javascript - 如何将值从我的 Laravel 应用程序的 Sqlite 数据库传递到 .js 文件以允许 Paypal Checkout 按钮起作用?
- c++ - stl中是否有类似execute_if算法的东西?