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