Python django进行查询

Python django进行查询,python,django,Python,Django,数据库表 select * from AAA; id | Name | Class | Grade | -------------------------------------- 1 | john | 1 | A | 2 | Jane | 2 | B | 3 | Joon | 2 | A | 4 |

数据库表

select * from AAA;
id   |    Name     |    Class  | Grade    |
--------------------------------------
1    |     john    |      1    |   A      |
2    |     Jane    |      2    |   B      |
3    |     Joon    |      2    |   A      |
4    |     Josh    |      3    |   C      |
|

代码

搜索结果->2

我想按值将等级改为班级

Django
target_filter = 'Class'
search_result = AAA.objects.filter(__"target_filter..."__ = '3').count()
搜索结果->1


Q) 如何完成此代码?可能吗?

也许你可以这样做:

target_filter = 'Class'
filter_args = {target_filter: 3}
search_result = AAA.objects.filter(**filter_args).count()
import somemodule

...

target_filter = 'Class'
search_result = AAA.objects.filter(getattr(somemodule, target_filter) = '3').count()

不知何故,这和我给出的答案是一样的。您也可以使用
getattr
,但现在可以使用模块对象本身。如果是同一个模块,则为
\uuuuu模块
,或者为导入的模块

target_filter = 'Class'
search_result = AAA.objects.filter(getattr(__module__, target_filter) = '3').count()

编辑:我搞错了,无法通过
访问当前模块。如果该类与搜索在同一模块中声明,则可以使用
globals()[target\u filter]
访问它。如果您的搜索来自其他模块,您可以这样做:

target_filter = 'Class'
filter_args = {target_filter: 3}
search_result = AAA.objects.filter(**filter_args).count()
import somemodule

...

target_filter = 'Class'
search_result = AAA.objects.filter(getattr(somemodule, target_filter) = '3').count()

您可以通过直接放入kwargs来缩短aeby的示例

target_filter = 'Class'
search_result = AAA.objects.filter(**{target_filter:3}).count()