Найти - Пользователи
Полная версия: Многовариантная выборка.
Начало » Django » Многовариантная выборка.
1
SorrowFuck
Есть модель с большим количеством полей, среди которых встречаются и TextField, IntegerField,BooleanField.
Есть форма по этой модели.
Есть представление. Задача сделать выборку на основании тех данных, которые переданы через форму. В форме могут быть заполнены не все поля, а выборочно.
Не могу сообразить, как сделать выборку только по тем полям которые переданы в запросе. Избегая большого количества IF, ведь вариантов заполненных и не заполненых полей может быть много.
То есть может быть методу filter можно передать словарь в который предварительно забиты переданные значения формы.
FishHook
Во-первых, методу filter действительно можно передать словарь, как и любому другому методу класса или обычной функции, которая принимает именованые параметы
instance=Model.objects
dct=dict()
dct.udate({key:value})
dct.udate({key1:value1})
instance=instance.filter(**dct)
Во-вторых, можно использовать функцию Q

from django.db.models import Q
import operator
qs=[Q(**{condition:value}) for condition, value in some]
instance=Model.objects.filter(reduce(operator.or_, qs))
SorrowFuck
FishHook
Во-первых, методу filter действительно можно передать словарь, как и любому другому методу класса или обычной функции, которая принимает именованые параметы
спасибо, буду делать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB