我有一个项目。
project = Project.objects.get(id=1)
现在我想从相关的项目表中选择数据。它可以通过两种方式完成,让我知道哪一种更好。为什么?
attachments = project.attachments_set.all()
samples = project.projectsamples_set.all()
attachments = Attachments.objects.filter(project=ctx['project'])
samples = ProjectSamples.objects.filter(project=ctx['project'])
我想了解技术前景。
答案 0 :(得分:2)
这些查询完全等效,如您检查生成的SQL,可以看到。我会说第一个是更好的,因为它更紧凑和可读,但这是非常主观的,所以它取决于你使用。
(请注意,如果您实际上没有项目对象开始,并且不需要它,那么通过project_id查询附件和示例比获取产品和使用相关访问器更有效。在您的示例中似乎不是这种情况。)