在django中使用.get()时如何选择相关?

dua*_*ty_ 14 django

如果我使用该get()函数从模型中获取一个项目,我不能使用select_related(),因为该对象没有它,但我仍然想用它来保存自己一个数据库查询.我所说的是这不起作用(我希望如此):

MyModel.objects.get(id=100).select_related('related_model')
Run Code Online (Sandbox Code Playgroud)

可以做的是不是意.我可以做这个:

MyModel.objects.filter(id=100).select_related('related_model')[0]
Run Code Online (Sandbox Code Playgroud)

但它不一样.我能为此做些什么吗?

Rem*_*ich 25

MyModel.objects.select_related('related_model').get(id=100)
Run Code Online (Sandbox Code Playgroud)

有效,但我现在无法测试.

  • @AddisonKlinke:我希望它们在评估时都变成完全相同的 SQL 查询。最终查询包含“WHERE id = 100”,因此数据库应该知道它不必连接所有行。 (3认同)
  • 对于大量的 `MyModel` ,这不会比 `MyModel.objects.filter(id=100).select_lated('lated_model').get()` 慢很多,因为它必须在 _all_ `MyModel 上进行相关连接` 对象而不仅仅是过滤列表? (2认同)