django 过滤器字段作为字符串

cod*_*der 2 django python-3.x

我想动态更改过滤字段。

我有一个名为的模型Product,字段是titlecode

class Product(models.Model):
    title = models.CharField(max_length=50)
    code = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)

我的过滤字段在这样的视图中将是动态的

def filter(request):

    search_choices = {
        '1': 'title__icontains',
        '2': 'code__icontains',
        }

    col_num = request.GET.get("col_num")
    value = request.GET.get("value")

    search_field = search_choices.get("col_num")

    qs = Product.objects.filter(search_field=value)

    ........
Run Code Online (Sandbox Code Playgroud)

这里的变量search_field总是动态的......所以我怎么能做到这一点

nev*_*ner 6

您可以通过将参数作为字典传递来实现此目的:

value = request.GET.get("value")
search_field = search_choices.get("col_num")
qs = Product.objects.filter(**{search_field: value})
Run Code Online (Sandbox Code Playgroud)