django 过滤字段作为字符串

标签 django python-3.x

我想动态更改过滤字段。

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

class Product(models.Model):
    title = models.CharField(max_length=50)
    code = models.CharField(max_length=50)

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

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)

    ........

这里变量search_field始终是动态的......那么我怎样才能实现这一点

最佳答案

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

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

关于django 过滤字段作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49875288/

相关文章:

python - 有 OR 过滤器吗? - Django

django - 使用 SSL (https) 的网络服务的 Nginx 设置

python - 如何在python中加密和解密字符串?

python - Django:覆盖 get_FOO_display()

python - Django 为同一项目中的每个应用程序提供一个数据库

python - Django - get_by_natural_key() 恰好接受 3 个参数(给定 2 个)

python - 相当于 functools.singledispatch 的 super()

python-3.x - 如何检查csv python中每一列的数据类型?

python - 这个 lambda 有什么问题(也许与 PyQt 有关?)

python - 将 While 循环设置为最多循环 3 次