Django : Как проверить существует ли список значений в таблице или нет в одном запросе в django?
пользователь ввел categoryIds = [1,2,3,............]
for catId in categoryIds:
if Category.objects.filter(id = catId).exist():
--------------
----single opertions like adding value in to dict.-----
else:
--------------
Мне нужно избежать неказистой итерации, проверяя ее в одном запросе. Проверьте правильность введенных значений, и тогда я смогу добавить их в dict за один шаг.
как я могу сделать это с помощью django ORM?
eg : Category.objects.filter(id__in=[1,2,3,4,5,6]) в случае, если 5 не является допустимым идентификатором, присутствующим в категории, он не должен входить в следующий шаг.
<
Category.objects.filter(id__in=categoryIds)
Вы можете использовать поиск по полю для фильтрации из списка значений:
Затем вы можете использовать values_list
для получения значений из заданного поля в наборе запросов:
valid_categories = set(Category.objects.filter(id__in=categoryIds).values_list('id', flat=True))
user_entered_category = [1,2,3,............]
<
to_be_created = []
existing_data = list(Model.objects.filter(id__in=user_entered_category).values_list("id",flat=True))
for data in existing_data:
id data not in user_entered_category:
to_be_created.append(
ModelName(field_name=value_toset, and other fields.......)
)
then do bulk create:
Model.objects.bulk_create(to_be_created)