При использовании запросов django. Возможно ли использовать операцию in
или другой метод для поддержания взаимно однозначного отображения между объектами.Django in query
Например, я хотел бы:
id_list = [12,2,33]
Foo.objects.filter(id__in=id_list)
Чтобы сохранить порядок и вернуть
None
, когда один из идентификаторов отсутствует, например:
ret = [Foo(id=12), None, Foo(id=33)]
где
Foo(id=2)
не существует.
В настоящее время единственным способом, который я делаю, является создание промежуточного словаря. Например:
map = {o.id: o for o in Foo.objects.filter(id__in=id_list)}
ret = [map.get(id, None) for id in id_list]
Вы также можете добавить ModelMethod таким образом, что-то вроде 'RET = [Foo.objects.get_or_none (ID = идентификатор) для идентификатора в ID_LIST]' будет работать. – Jkdc