首页 > 解决方案 > django 使用 URL 中的字符串进行动态查询集过滤

问题描述

有什么方法可以动态过滤查询集,即我们从 url 中有一个两个字符串值并搜索第一个字符串是 模型属性的模型,并获取包含该特定属性中第二个字符串的所有对象

标签: djangodjango-modelsdjango-filter

解决方案


嗨,您只需要遵循此解决方案并根据您的情况进行调整

Model.objects.values('attribute', 'id') # using '.values'
[{'attribute': 'some attribute', 'id': 1 }, {'attribute': 'some 3', 'id': 2}, {'attribute': 'something', 'id': 3}, {'attribute': 'some some', 'id': 4}] # returns list of dictionaries

使用“第二个字符串”过滤或搜索字典列表,并使用 id 进行新查询。你可以调整这个

Model.objects.filter(id__in=object_ids)

或使用此解决方案

filterExpresion = attribute+'__contains'
dynamicFilter = {filterExpresion: secondString} 
Model.objects.filter(**dynamicFilter)

推荐阅读