【问题标题】:Django count nested ManyToManyField ObjectsDjango 计数嵌套的 ManyToManyField 对象
【发布时间】:2020-04-22 12:31:45
【问题描述】:

我有以下模型,它有 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 类的总数?

【问题讨论】:

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


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 我还在想办法在prefetch方法中添加上述注释,因为prefetch字段是M2M,如果你知道如何添加,请告诉我
    猜你喜欢
    • 2020-04-25
    • 2021-10-30
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    相关资源
    最近更新 更多