2016-06-16 85 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

你是什麼意思更新? –