我有以下模型,它有 3 个类 Project
、CrawlerProject
、CrawlerResults
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
对象中所有 CrawlerProjects
的 CrawlerResults
对象的总数。
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/