Как не включать данные из БД в условие множественных икон в фильтре модели?
В настоящее время я разрабатываю приложение, используя Django.
Я хочу использовать несколько icontains условий в filter с помощью Q, как показано ниже.
но в этом случае, если target_1 или target_2 является empty string(''), то все данные будут получены.
queryset = MyModel.objects.filter(Q(my_field_1__icontains=target_1)| Q(my_field_2__icontains=target_2)).all()
Но я не хочу включать его в данные, если значение любой из целей станет пустой строкой.
Как я могу включить его только если они не включают пустую строку и содержат другие значения?
Python: 3.7.5
Django: 3.2.
Вы можете работать с пониманием словаря, чтобы отфильтровать пустые значения:
data = {'my_field_1__icontains': target_1, 'my_field_2__icontains': target_2}
data = {k: v for k, v in data.items() if v}
if data:
queryset = MyModel.objects.filter(Q(**data, _connector=Q.OR))
else:
queryset = MyModel.objects.none()
<1>> проверяется, есть ли хотя бы один элемент с непустой строкой. Если это не так, мы возвращаем пустой кверисет.if data