私はルーブリックを表すモデルを持っており、各ルービックには複数の行があります。何らかの理由で、私は以下の質問を実行し、不完全なクエリーセットを受け取ります。変数semesterrubricは、コード内ですでに評価されているルーブリックのクエリセットであり、正しいルーブリックモデルを返します。Djangoクエリーセットは不正なモデルインスタンスを返しますが反復処理を行います
"""
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クエリセットオブジェクトを反復処理し、個々のルーブリックから行を引いたときに、私は私が必要な行を持つ2つのクエリセットを受けるので、それが不完全であることを知っています。
[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
*変数semesterrubricはrubrics *のquerysetです。クエリーセットではありません。それは 'Rubric'インスタンス/オブジェクトでなければなりません。 –