Подстановочный знак в Django (Objects.filter) - PullRequest
4 голосов
/ 24 августа 2009

Есть ли в Django символ подстановки для использования в Objects.filter?

Например, есть ли символ, который эквивалентен этому:

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

т.е. вместо того, чтобы комментировать c, я не мог бы поставить c = WILDCARD или c = * ... вы получите jist. Спасибо.

РЕДАКТИРОВАТЬ: как, например, если у вас есть большой список атрибутов, которые можно искать, и вы хотите искать только некоторые из них, у вас точно не будет множества функций, выполняющих эти конкретные поиски. Мне нужен какой-то символ, который сообщает Django, а затем SQL "это поле не имеет значения, я хочу все здесь" ... не считая поля (как в примере), просто создает множество функций.

Ответы [ 2 ]

10 голосов
/ 24 августа 2009

попробуйте использовать , содержит и icontains .

Вот пример:

Foo.objects.filter(name__icontains = 'hello') #fetches all whose name field contains 'hello'
7 голосов
/ 24 августа 2009

Единственное, что нужно сделать, это указать имена атрибутов и значения, которые вы динамически фильтруете:

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

Затем вы устанавливаете фильтр dict во время выполнения, добавляете или удаляете пары ключ / значение в зависимости от ситуации. Это ** фильтры является ключевым аргументом. Проверьте здесь для получения дополнительной информации:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...