2010-04-01 111 views
4

我想用运行时间之前不知道的字段名称过滤器调用查询...不知道如何构造变量名称......或者我可能已经很累了。python中的动态变量名称

field_name = funct() 
locations = Locations.objects.filter(field_name__lte=arg1) 

其中,如果本功能()返回的名字就等于给

locations = Locations.objects.filter(name__lte=arg1) 

不知道该怎么做......

回答

10

您可以创建一个字典,设置参数,并通过这该功能由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) 
+0

在最后一行注释中需要另外一个'_'在'some_name_lte'中。 – 2010-04-02 02:35:41

+0

解开一个字典作为kwargs,谢谢! – philgo20 2010-04-02 16:09:33