Django相关_名称向后跟随
我在Django有以下型号:Django相关_名称向后跟随,django,Django,我在Django有以下型号: class Feedback(models.Model): solution=models.ForeignKey(Solution, related_name='solution1') idea=models.ForeignKey(Idea,null=True, blank=True,related_name='idea1') idea2=models.ForeignKey(Idea, related_name='idea2') 给定解决
class Feedback(models.Model):
solution=models.ForeignKey(Solution, related_name='solution1')
idea=models.ForeignKey(Idea,null=True, blank=True,related_name='idea1')
idea2=models.ForeignKey(Idea, related_name='idea2')
给定解决方案的ID,我如何编写一个查询来检索该解决方案反馈中的所有ideas2。我想知道在Django是否可能。谢谢!
我尝试过类似的方法,但是如何指定我要查找的是idea2,而不是idea1
ideas2= Idea.objects.filter(feedback_solution1=solutionID)
或
查看。中的性能注意事项部分,无需显式的
list()
casting。值列表(..,flat=True)
已返回列表type@karthikrvalues\u list
返回的是ValuesListQuerySet
,而不是列表。没有list()
casting,Django将执行一个子查询,使用list()
它将在一个单独的查询中获取idea2\uu pk
值。正如我在解决方案中所说的,检查性能注意事项,它解释了为什么可能应该使用list()以下是文档:@Alasdair@karthikr尝试在shell中执行values\u list
查询,并检查结果的类型。您将看到它是一个ValuesListQuerySet
实例。我在文件中没有看到任何与此相矛盾的东西。
feedbacks = list(Feedback.objects.filter(solution=solutionID).values_list('idea2__pk', flat=True))
ideas2 = Idea.objects.filter(pk__in=feedbacks)
feedbacks = list(Feedback.objects.filter(solution=solutionID).values_list('idea2__pk', flat=True))
ideas2 = Idea.objects.in_bulk(feedbacks)