2017-04-03 34 views
0

我有一個模型,它代表一個標題,每個標題都有多行。出於某種原因,我運行下面的查詢,並收到一個不完整的查詢集。變量semesterrubric是已經在代碼中進行了評估並返回正確的標題模型的rubrics的查詢集。Django queryset返回不正確的模型實例,但迭代工作

""" 
semesterrubric pulls both Rubric 1 and Rubric 2 
Rubric 1: 
    Row: 2 Row:4 
Rubric 2: 
    Row: 1 Row : 1 
""" 
Row.objects.filter(rubric=semesterrubric) 
<QuerySet [<Row: 2>, <Row: 4>]> 

我知道這是不完整的,因爲當我遍歷semesterrubric QuerySet對象,並拉離每一個人專欄行,我收到兩條查詢集有我需要的行。

[rubric.row_set.all() for rubric in semesterrubric] 
[<QuerySet [<Row: 2>, <Row: 4>]>, <QuerySet [<Row: 1>, <Row: 1>]>] 

我想要一個查詢返回所有的行。我錯過了什麼?我已經閱讀了(大部分)關於查詢集的文檔,但是我可能錯過了一些東西。

models.py

class Rubric(models.Model): 
    name = models.TextField(default="Basic Rubric", unique=True) 
    template = models.BooleanField(default=True) 

    def __str__(self): 
     return self.name 

class Row(models.Model): 
    CHOICES = (
    ('0', 'Your string for display'), 
    ('4','Exemplary'), 
    ('3','Proficient'), 
    ('2','Partially Proficient'), 
    ('1','Incomplete'), 
    ) 
    name = models.CharField(default="None", max_length=100) 
    rubric = models.ForeignKey(Rubric) 
    row_choice = models.CharField(max_length=20,choices=CHOICES, default="0") 
    excellenttext = models.TextField(default="", blank=True) 
    proficienttext = models.TextField(default="", blank=True) 
    satisfactorytext = models.TextField(default="", blank=True) 
    unsatisfactorytext = models.TextField(default="", blank=True) 
    standards = models.ManyToManyField(Standard) 

    def __str__(self): 
     return self.row_choice 
+0

*變量semesterrubric是rubrics *的查詢集。它不應該是一個查詢集。它應該是一個'Rubric'實例/對象。 –

回答

2

我不是在傳遞一個查詢集這樣的建議。請嘗試:

Row.objects.filter(rubric__in=semesterrubric.all()) 
2

您收到兩個查詢集,因爲您的semesterrubric裏面有兩個元素。嘗試Row.objects.filter(rubric__in=semesterrubric) 這應該解決您的問題

相關問題