Django ORM哪种技术更好?

时间:2014-05-08 06:13:55

标签: django orm foreign-keys

我有一个项目。

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'])

我想了解技术前景。

1 个答案:

答案 0 :(得分:2)

这些查询完全等效,如您检查生成的SQL,可以看到。我会说第一个是更好的,因为它更紧凑和可读,但这是非常主观的,所以它取决于你使用。

(请注意,如果您实际上没有项目对象开始,并且不需要它,那么通过project_id查询附件和示例比获取产品和使用相关访问器更有效。在您的示例中似乎不是这种情况。)