Django: Если queryset объектов пуст, записывайте вместо него ноль. Я решаю эту проблему с помощью numpy, но мне нужно прямое решение в queryset.

Мне кажется, что должно быть более простое и элегантное решение, но я не могу его найти. У меня есть следующее в views.py. Как вы можете видеть, я добиваюсь желаемого с помощью numpy, но мне нужно прямое решение:

 myarray = np.asarray(MyDatabase.objects.filter(
                status='user').values_list('name','age').order_by('age')) 
 
 if myarray.size==0:
   myarray=np.zeros((1,2))

Что я хочу, так это установить нули, когда набор запросов объекта пуст, например, в этом случае status=user фильтруется из моей таблицы базы данных и предположим, что никакого status=user не существует, тогда я хочу, чтобы 'name' и 'age' показывали 0 в качестве выходных данных. Я сделал это, но мне просто не нравится использовать дополнительные строки. Интересно, есть ли способ напрямую выводить нули, когда фильтр объектов пуст? В документации говорится, что django 4.0 поставляется с опцией default() в queryset, чтобы сделать именно то, о чем я спрашиваю, но пример не приводится. Буду признателен, если вы поделитесь своим решением

Спасибо

Самообъяснение:


# db values
query = (
    MyDatabase
    .objects
    .filter(status='user')
    .values_list('name','age')
    .order_by('age')
)

# set db values or zeros if no values
myarray = query or [(0, 0)]
Вернуться на верх