我想调用一个带有字段名称过滤器的查询,但在运行前我不知道......不知道如何构造变量名称......或者我可能很累。
field_name = funct()
locations = Locations.objects.filter(field_name__lte=arg1)
如果funct() 返回name 将等于
locations = Locations.objects.filter(name__lte=arg1)
不知道该怎么做...
最佳答案
您可以创建一个字典,设置参数并通过 unpacking the dictionary as keyword arguments 将其传递给函数:
field_name = funct()
params = {field_name + '__lte': arg1, # field_name should still contain string
'some_other_field_name': arg2}
locations = Locations.objects.filter(**params)
# is the same as (assuming field_name = 'some_name'):
# Locations.objects.filter(some_name__lte=arg1, some_other_field_name=arg2)
关于python - python中的动态变量名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2564140/