当前位置:  开发笔记 > 编程语言 > 正文

查询Django中动态列数的更清洁方法?

如何解决《查询Django中动态列数的更清洁方法?》经验,为你挑选了1个好方法。

就我而言,我有一些来自表单的列名.我想过滤以确保它们都是真的.这是我目前的做法:

for op in self.cleaned_data['options']:
    cars = cars.filter((op, True))

现在它可以工作,但是有可能有大约40列要测试,因此保持查询效率不高.

有没有办法可以将它压缩成一个过滤查询?



1> Prairiedogg..:

将查询构建为字典,并使用**运算符将选项解压缩为filter方法的关键字参数.

op_kwargs = {}
for op in self.cleaned_data['options']:
    op_kwargs[op] = True
cars = CarModel.objects.filter(**op_kwargs)

这在django文档中有所介绍,并且也在SO上有所涉及.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有