Django 查询的动态过滤器

hec*_*r22 2 django search python-2.7

我想在用户提供的字段中进行搜索。

到目前为止我有这个:

def search_engine(model, given_field, text):
    # Stuff
    result = model.objects.filter(given_field__icontains=text)
    return result
Run Code Online (Sandbox Code Playgroud)

过滤器内的“given_field”将是函数中给定的参数,它是一个变量。

lev*_*evi 6

使用生成的动态密钥创建一个字典,given_field然后使用**生成的关键字参数解压缩它。

def search_engine(model, given_field, text):
    # Stuff

    filters = {
        given_field+'__icontains': text
    }
    result = model.objects.filter(**filters)
    return result
Run Code Online (Sandbox Code Playgroud)