Basi c python или оператор ( можно вернуть значение по умолчанию, если нет ):
queryset[0]
- получить первый объект из набора запросов результат, поэтому в случае, если совпадений не найдено - набор запросов будет содержать без элементов (queryset == <QuerySet[]>
) и получение первого элемента из него [0]
завершится ошибкой .
Правильный способ - использовать .first()
в наборе запросов для его оценки и получения первого результата или None
.
. Для этого примера это может быть однострочным:
qs_data = vFileAllocation.objects.values() \
.filter(track_id_no=get_track_id_no) \
.first() or qs_data
или
qs = vFileAllocation.objects.values() \
.filter(track_id_no=get_track_id_no).first()
# qs is already evaluated
qs_data = qs or qs_data
- Исправлен ответ благодаря комментарию @ csandreas1