DB TABLE
select * from AAA;
id | Name | Class | Grade |
--------------------------------------
1 | john | 1 | A |
2 | Jane | 2 | B |
3 | Joon | 2 | A |
4 | Josh | 3 | C |
|
代码
Django
search_result = AAA.objects.filter(Grade = 'B').count()
print search_result
search_result - > 2
我想通过VALUE将成绩更改为班级。
Django
target_filter = 'Class'
search_result = AAA.objects.filter(__"target_filter..."__ = '3').count()
search_result - > 1
问)如何填写此代码?有可能吗?
答案 0 :(得分:1)
也许你可以这样做:
target_filter = 'Class'
filter_args = {target_filter: 3}
search_result = AAA.objects.filter(**filter_args).count()
答案 1 :(得分:0)
我在某种程度上给出了同样的答案here。您也可以使用getattr
但现在使用模块对象本身。如果__module__
是相同的模块,或import
编辑的模块,则为target_filter = 'Class'
search_result = AAA.objects.filter(getattr(__module__, target_filter) = '3').count()
。
__module__
编辑:我弄错了,无法通过globals()[target_filter]
访问当前模块。如果在与搜索相同的模块中声明类,则可以使用import somemodule
...
target_filter = 'Class'
search_result = AAA.objects.filter(getattr(somemodule, target_filter) = '3').count()
来访问它。如果您的搜索来自其他模块,您可以这样做:
{{1}}
答案 2 :(得分:0)
你可以通过直接放置kwargs来缩短aeby的例子
target_filter = 'Class'
search_result = AAA.objects.filter(**{target_filter:3}).count()