Используя Django пользовательское свойство метода модели в order_by ()

Стандартный способ сообщения об ошибке в python состоит в том, чтобы вызвать исключение и позволить вызывающему коду его обработать. Либо пусть NameError & amp; Ошибка типа продолжить вверх или перехватить их и вызвать исключение InvalidPassword, которое вы определяете.

Хотя из функции можно возвращать флаг успеха / неудачи или код ошибки, как вы это сделали, это не рекомендуется - вызывающий может легко забыть проверить возвращаемое значение и получить ошибки. потерял. Кроме того, вы возвращаете значение из установщика свойств - это бессмысленно в Python, поскольку присваивания не являются выражениями и не могут возвращать значение.

Вы также никогда не должны печатать сообщение для пользователя при обработке исключений - что если вы позже захотите использовать функцию или класс в программе с графическим интерфейсом? В этом случае вашему заявлению на печать будет некуда печатать. Регистрация ошибки в лог-файл (с использованием модуля журналирования Python) часто полезна для отладки.

40
задан Andre Miller 11 June 2009 в 14:18
поделиться

1 ответ

Нет, вы не можете этого сделать. order_by применяется на уровне базы данных, но база данных ничего не может знать о ваших пользовательских методах Python.

Вы можете использовать отдельные поля для упорядочивания:

Author.objects.order_by('first_name', 'last_name')

или сделать упорядочивание в Python :

sorted(Author.objects.all(), key=lambda a: a.full_name)
66
ответ дан 27 November 2019 в 01:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: