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)
Вернуться на верх