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

Как в Django вынести запрос в отдельную функцию модели?

Здравствуйте, например имеется такой запрос:
articles = Articles.objects.filter(category=1)....(тут много ещё всяких условий)...order_by('title')

Запрос очень длинный и вызывать его нужно в нескольких местах, в какой то момент можно что то забыть учесть.

Подскажите пожалуйста, как сделать так, чтобы я мог сделать запрос такого вида:
articles = Articles.published() или Article.objects.published()

Ну имеется ввиду, чтобы не писать всю цепочку запросов, а каким то образом создать функцию в модели, как то её назвать и в ней прописать цепочку.

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

Может кто может пример привести того, как должна такая функция выглядеть?
  • Вопрос задан
  • 353 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
class Articles(models.Model):
     title = ...
     category = ...
     ...

     @classmethod
     def published(cls):
         return cls.objects \
              .filter(category=1) \
              ....(тут много ещё всяких условий).. \
              .order_by('title')


articles = Articles.published()


Но использование менеджеров для этого, как отметил Дмитрий - более предпочтительно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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