相关疑难解决方法(0)

Django:使用values()和get_FOO_display()?

我正在尝试改进一些现有的代码,这些代码最初耗时3分钟来准备一个大型dataTable(然后由Ajax返回).旧代码遍历大型querySet,从各种相关对象收集信息.从我所阅读的内容和监视SQL日志开始,迭代查询集通常是一个坏主意,因为SQL是针对每个项目执行的.相反,我一直在使用值来在单个SQL语句中收集信息,然后迭代它.使用这种技术,我将执行时间减少到15秒以下(我还没有完成).但是因为我不再使用模型对象,所以我不能使用get_FOO_display().有没有办法在使用values()时使用此功能?

简化后,原来是:

for user in users:
   data.append(user.get_name_display())  # Appends 'Joe Smith'
return data
Run Code Online (Sandbox Code Playgroud)

新代码是:

for user in users.values('name'):
   data.append(user['name'])  # Appends 'JSmith001', which is incorrect
return data
Run Code Online (Sandbox Code Playgroud)

此外,如果有其他方法来保留模型对象的创建,但只需要在后端有一个SQL语句,我很想知道它.谢谢!

python django django-queryset

9
推荐指数
1
解决办法
3125
查看次数

标签 统计

django ×1

django-queryset ×1

python ×1