django - 向 Objects.filter 添加额外参数(通过 Dict)?

标签 django filter

假设我们有一个 dvd我们要搜索的表 price=14.99rating=18 .我们可以这样做:

#Making some dictionary
dict1 = {}

#Adding some stuff
dict1['price']=14.99
dict1['rating']18

#Use dict as filter
dvd.objects.filter(**dict1)

有没有办法添加额外的参数,如:
dvd.objects.filter(title__icontains='the')

我只想为用户增加一点灵活性,因为目前他们可以选择他们想要搜索的字段并准确指定他们想要的内容。但是我想搜索部分匹配项,例如 __icontains做。我也想要 __gt , __lt .

这可能吗?

最佳答案

代替:

dict['price'] = 14.99

你可以这样做:
dict['price__gte'] = 10
dict['price__lte'] = 15

当您使用 **kwargs 时,以下内容是相同的:
Model.objects.filter(price__gte=10, price__lte=15)
# or
kwargs = {'price__gte': 10,
          'price__lte': 15}      
Model.objects.filter(**kwargs)

关于django - 向 Objects.filter 添加额外参数(通过 Dict)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1763495/

相关文章:

django - 如何在 Django 中使多对多字段可选?

django - 如何确保序列化程序中至少有一个字段不为空?

python - 如何使 django 测试框架从实时数据库读取?

python - Django - 如何通过 HttpResponseRedirect 传递变量

ios - 返回 WF : _WebFilterIsActive returning: NO on device 的 MP3 流

python - 如何在 Python3 中获取 "old"zip()?

algorithm - 布隆过滤器或布谷鸟哈希?

javascript - 使用Array.filter后如何获取多个值?

list - 在 Haskell 中过滤元组列表

grails - Grails过滤器检测 session 超时