Django 计算嵌套的 ManyToManyField 对象

标签 django django-models django-rest-framework django-forms

我有以下模型,它有 3 个类 ProjectCrawlerProjectCrawlerResults

class CrawlerProject(models.Model):
    user = models.ForeignKey(User,on_delete=models.SET_NULL,null=True)
    cralwer_results_M2M = models.ManyToManyField(CrawlerResults,blank=True)
class Project(models.Model):
    user = models.ForeignKey(User,on_delete=models.SET_NULL,null=True)
    crawler_project_M2M = models.ManyToManyField(CrawlerProject,blank=True)

在这里,我想计算单个 Project 对象中所有 CrawlerProjectsCrawlerResults 对象的总数。

projects = Project.objects.all().prefetch_related('crawler_project_M2M')
for each_proj in projects:
   total_num_of_crawler_results = each_proj.crawler_project_M2M__cralwer_results_M2M.count() ## count all the crawler_results objects of all crawler_project present in current `project` object.

如何以高效的方式(单个查询)获取嵌套的 ManyToMany 类的总数?

最佳答案

试试这个:

from django.db.models import Count
CrawlerProjects =CrawlerProject.objects.all().annotate(CrawlerResults_count=Count('project'))

关于Django 计算嵌套的 ManyToManyField 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59587117/

相关文章:

django - 如何更改 Django 管理表单的布局和字段配置?

python - 使用 2 位数字与 3 位数字时,django 中的数学结果不正确?

python - Django:icontains 大小写对 unicode 敏感

python - 嵌套序列化器未显示

python - 如何在 Django Web 上使用 POST Rest API?想在 django 中使用用户注册的 API,这是我完成的代码

django - 数据和验证数据之间有什么区别?

python - 更新 View 上的查询集而不实际更新数据库

python - 是否需要在模型字段中设置 max_length?

python - 提交表单时,Django 会自动为外键赋值吗?

python - GridFS (MongoDB) 的自定义存储系统?