Задать вопрос
@HeyAway

Как обратиться к атрибуту объекта динамически?

Простите, но не знаю по каким ключевикам искать.

Скажем, есть код получения данных из бд и их сортировки(схематично):
if sort_by == "date" : sort_by = Articles.created.desc()
Articles.select().order_by(sort_by).offset(offset).limit(limit)


Либо:

if sort_by == "created" : sort_by = Articles.created.desc()
Articles.select().order_by(sort_by).offset(offset).limit(limit)


Этих самых значений "sort_by" очень много и получается довольно длинный список. Добавим это к тому, что в приложении полно разделов и много моделей, которые работают по одному сценарию: запрос -> получить параметры сортировки -> получить данные из модели. Для каждого раздела один и тот же код, можно сказать. Ужасно.

Так вот, еще раз попрошу прощения, как объединить весь этот код в одну функцию типа:
sort_by - string
def get_all_data(Model, sort_by, offset, limit):
    try:
         sort_by = Model.%SORT_BY%.desc()
         return Model.select().order_by(sort_by).offset(offset).limit(limit)
    except:
         raise Exception("xxx")


Это, возможно, базовые основы. Правда и я не программист, но вышло так, что пришлось столкнуться с данной сферой. Был небольшой опыт в JS.
  • Вопрос задан
  • 61 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
attr_name = 'created'
sort_by = getattr(Model, attr_name).desc()

Но вообще для подобных задач лучше использовать движки полнотекстового поиска, типа Elasticsearch.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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