Django中的通配符(Objects.filter)

时间:2009-08-24 14:28:06

标签: django

Django中是否存在要在Objects.filter中使用的通配符?

例如,是否有一个字符相当于这样做:

Prices.objects.filter(a = example1
                     ,b = example2
                    #,c = example3
)

即。而不是评论c,我不能把c = WILDCARD或c = * ......你得到了jist。谢谢。

编辑:就像在,如果你有一个可以搜索的属性的大列表,并且你只想搜索少数几个,那么你并不会完全拥有执行这些特定搜索的大量函数。我需要一些告诉Django的字符,然后告诉SQL“这个字段无关紧要,我想要一切都在这里”......不包括字段(就像在示例中一样)只是创建了一大堆函数。

2 个答案:

答案 0 :(得分:9)

尝试使用containsicontains

以下是一个例子:

Foo.objects.filter(name__icontains = 'hello') #fetches all whose name field contains 'hello'

答案 1 :(得分:7)

唯一要做的是使用动态过滤的属性名称和值的字典:

filters = {"a": "example1", "b": "example2", "c": "example3" }
prices = Prices.objects.filter(**filters)

然后在运行时设置过滤器dict,根据需要添加或删除键/值对。 **过滤器是一个关键字参数。点击此处了解更多信息:

http://www.nomadjourney.com/2009/04/dynamic-django-queries-with-kwargs/