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)]