在Django查询比较中使用变量而不是字段名称

Wes*_*ssi 2 django

假设我有以下查询:

query_result = Mymodel.objects.values('price').filter(price__gte=0)
Run Code Online (Sandbox Code Playgroud)

如果我想概括查询并将其放在函数中,我可以'price'用变量替换:

def price_query(column_name):
    query_result = Mymodel.objects.values(column_name).filter(column_name__gte=0)
    return query_result 

price_query('price')
Run Code Online (Sandbox Code Playgroud)

第一次替换'price'可以column_name正常工作但如何使用__gte变量而不是字段名称进行比较.

任何帮助深表感谢.

Kam*_*mil 7

您可以解压缩字典以提供关键字参数:

def price_query(column_name):
    filter_kwargs = {
        "{}__gte".format(column_name): 0
    }
    query_result = Mymodel.objects.values(column_name).filter(**filter_kwargs)
return query_result
Run Code Online (Sandbox Code Playgroud)