将额外参数添加到Objects.filter(通过Dict)?

Fed*_*rer 4 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)
Run Code Online (Sandbox Code Playgroud)

有没有办法添加额外的参数,如:

dvd.objects.filter(title__icontains='the')
Run Code Online (Sandbox Code Playgroud)

我想为用户添加更多的灵活性,因为目前他们可以选择他们想要搜索的字段并准确指出他们想要的内容.但是我想搜索部分匹配,就像__icontains那样.我也想__gt,__lt.

这可能吗?

she*_*ats 7

代替:

dict['price'] = 14.99
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

dict['price__gte'] = 10
dict['price__lte'] = 15
Run Code Online (Sandbox Code Playgroud)

当您使用**kwargs时,以下内容完全相同:

Model.objects.filter(price__gte=10, price__lte=15)
# or
kwargs = {'price__gte': 10,
          'price__lte': 15}      
Model.objects.filter(**kwargs)
Run Code Online (Sandbox Code Playgroud)