2016-06-16 83 views
0

假设我有以下型号:计数内多对多领域的Django

class Analysis(Model): 
    experts = ManyToManyField(Expert, 
           related_name='analysis', 
           through='AnalysisExpert') 


class AnalysisExpert(Model): 
    analysis = ForeignKey(Analysis) 
    expert = ForeignKey(Expert 

    questions = ManyToManyField(Question, through='ExpertQuestion') 

class ExpertQuestion(Model): 
    expert = ForeignKey(AnalysisExpert, related_name="expert_comparisons") 

    question = ForeignKey('Question') 

它看起来像我有嵌套ManyToManyField。分析 - >专家 - >问题

什么是计算特定分析问题数量的最有效方法?

+1

是否缺少在您的示例代码中的'Expert'模型,还是你不小心参考'Expert'你'Analysis'模式? – Hybrid

+0

我使用它,但它不包含有关此问题的重要信息。用户也可以使用。 –

回答

0

您可以使用values_list计算单个分析对象的问题数量。

analysis_obj.experts.all().values_list("question").count() 

上面的查询测试,下面的模型:

class Question(models.Model): 
    question = models.CharField(max_length=50) 


class Expert(models.Model): 
    question = models.ManyToManyField(Question, 
           related_name='questions') 

class Analysis(models.Model): 
    experts = models.ManyToManyField(Expert, 
        related_name='analysis') 
+0

你测试了吗?它不起作用。无法将关键字问题解析为字段。 –

+0

是的,您可以请专家和问题模型更新您的问题,我会重新测试。 – ravigadila

+0

你是什么意思更新? –