django/python-db在访问变量时命中

django/python-db在访问变量时命中,python,django,Python,Django,对于上面的模型,假设我们有一个在模板中呈现的对象“appuser” django是否每次在代码中像appuser.User.username一样使用时都会命中用户db 如果settings.DEBUG设置为True,那么在访问外键和多对多变量时,应启用有关如何在django/python数据库中进行查找的任何帮助???SQL日志记录。至于您的问题,是的,当您执行AppUser.User.username时,AppUser将与用户表(使用主键)联接 如果您正在运行dev-webserver,您应该

对于上面的模型,假设我们有一个在模板中呈现的对象“appuser”

django是否每次在代码中像appuser.User.username一样使用时都会命中用户db


如果settings.DEBUG设置为True,那么在访问外键和多对多变量时,应启用有关如何在django/python数据库中进行查找的任何帮助???

SQL日志记录。至于您的问题,是的,当您执行AppUser.User.username时,AppUser将与用户表(使用主键)联接


如果您正在运行dev-webserver,您应该能够在控制台上看到日志。

您应该仔细阅读此日志,了解数据库访问优化的所有详细信息:

然后
选择\u related()

至于对你的问题的快速回答:这取决于你如何检索对象

对于appuser.user,它将分别命中数据库

但是

appuser = AppUser.objects.get(pk=id)
它将执行联合查询,因此访问appuser.user不会触发SQL查询。

它位于文档上

要减少db点击,请检查Béres Botond答案

appuser = AppUser.objects.get(pk=id)
appuser = AppUser.objects.select_related().get(pk=id)