python - 获取用于 django 动态过滤器的 url 参数

标签 python django

考虑这个网址:

www.anysite.com/get_count/?sex=5&sex=6&city=5&city=7&job=7&job=8......

用于 View 中的动态查询:

model = anyModel.objects.filter(sex=5).filter(sex=6).filter(city=5)....

如何在此查询中插入 url 参数?

最佳答案

像这样的东西怎么样?

model = anyModel.objects
for k,vals in request.GET.lists():
    for v in vals:
        model = model.filter(**{k: v})

或者,如果您想更改过滤器的类型(例如,__contains),您可以将最后一行替换为类似以下内容:

        model = model.filter(**{"%s__contains" % k: v})

如果您想将 get 变量的多个值解释为 OR,另一种选择是使用 in 比较:

model = anyModel.objects
for k,vals in request.GET.lists():
    model = model.filter(**{"%s__in" % k: vals})

关于python - 获取用于 django 动态过滤器的 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561559/

相关文章:

python - Django 上下文处理器和具有多个应用程序的 Django 项目

python - Django FileField 未使用 SimpleUploadedFile 对象进行验证

python - Django - ManyRelatedManager 对象在返回 Object 时不可迭代

python - Django 休息框架 : Serialize data from nested json fields to plain object

python - 使用 IPython Notebook 获取输出

python - 将url编码的字符串转换为python unicode字符串

python - 为 linux 构建可执行文件

django - verbose_name 或 help_text 中的重音/特殊字符(例如,ñ)?

python - 我如何在 Django 中编写装饰器来检查两个单独的条件并相应地重定向?

python - Rest 框架序列化器总是为 is_valid 返回 False