Форум сайта python.su
Есть модель с большим количеством полей, среди которых встречаются и TextField, IntegerField,BooleanField.
Есть форма по этой модели.
Есть представление. Задача сделать выборку на основании тех данных, которые переданы через форму. В форме могут быть заполнены не все поля, а выборочно.
Не могу сообразить, как сделать выборку только по тем полям которые переданы в запросе. Избегая большого количества IF, ведь вариантов заполненных и не заполненых полей может быть много.
То есть может быть методу filter можно передать словарь в который предварительно забиты переданные значения формы.
Офлайн
Во-первых, методу filter действительно можно передать словарь, как и любому другому методу класса или обычной функции, которая принимает именованые параметы
instance=Model.objects dct=dict() dct.udate({key:value}) dct.udate({key1:value1}) instance=instance.filter(**dct)
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))
Офлайн
FishHookспасибо, буду делать.
Во-первых, методу filter действительно можно передать словарь, как и любому другому методу класса или обычной функции, которая принимает именованые параметы
Офлайн