我有这些模特:
class Task(models.Model):
user = models.ForeignKey(User)
name = models.CharField()
class Report(models.Model):
task = models.ForeignKey(
Task, blank=True, null=True, related_name='+')
status = models.CharField(max_length=32, choices=Status.CHOICES, default=Status.INCOMPLETE)
现在我想获得所有Task
及其相关状态。
我该怎么做?
答案 0 :(得分:1)
首先,'+'
不是有效的related_name
。它也不是很明确。
请尝试将'+'
替换为'reports'
:
# ...
class Report(models.Model):
task = models.ForeignKey(
Task,
blank=True,
null=True,
related_name='reports' # <<<
)
status = models.CharField(
max_length=32,
choices=Status.CHOICES,
default=Status.INCOMPLETE
)
然后,要获取所有Task
及其相关状态,您可以使用values
:
>>> Task.objects.values('name', 'report__status')
<QuerySet [{'name': 'test', 'report__status': 'OK'}, ...]>
答案 1 :(得分:0)
将related_name
的值更改为其他内容,例如'reports'
:
class Report(models.Model):
task = models.ForeignKey(
Task, blank=True, null=True, related_name='reports')
status = models.CharField(max_length=32, choices=Status.CHOICES, default=Status.INCOMPLETE)
现在,如果您有一个Task对象(不是queryset),您可以使用以下命令获取其报告的查询集:
reports = task.reports.all()
如果需要,您可以在reports
上使用过滤器()。
reports = task.reports.filter(status='something')
答案 2 :(得分:0)