我有一个代表一个量规的模型,每个量规都有多行。出于某种原因,我运行下面的查询,并收到一个不完整的查询集。变量semesterrubric是一个rubrics的查询集,已经在代码中进行了评估并返回了正确的rubric模型。
"""
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查询集对象并从每个单独的量规中拉出行时,我会收到两个包含我需要的行的查询集。
[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 :(得分:2)
我不建议传递这样的查询集。尝试:
Row.objects.filter(rubric__in=semesterrubric.all())
答案 1 :(得分:2)
您收到了两个查询集,因为您的semesterrubric
内部有两个元素。试试Row.objects.filter(rubric__in=semesterrubric)
这应该可以解决你的问题