с одним вопросом) Есть паттерн репозитория, в нем мы например берем список книг. и он нам по факту должен вернуть List[Book] а не QuerySet[ORMBook]. Но если он нам вернет список, мы не сможем сделать например prefetch(‘authors’) но и QuerySet вернуть будет не очень. Как тогда быть?
Он сам должен делать префетч
Да, но префетч не всегда нужен) . Уже допер как круче сделать. Не знаю. Стоит ли тут это обсуждать. А то тапками закидают)
Значит два метода
Да. Но ты тогда должен вернуть queryset и передать его в метод префетча) это развяжет руки) Так не должно быть) На самом деле вопрос решен) не бери в голову) спасибо все равно)
Эмм. Три метода. Один внутренний, а два возвращают список на основе него
Снова много ньюансов) не совсем понял почему метода три?) получить и запрефетчить, не?)
class Repo: def _q(self, args) -> QuerySet:... def list_items(args): return self._q(args).all() def list_items_with_x(self, args) return self._q(args).prefetch(x).all()
Ага. Супер. А если у меня идут метод для префетчей. И метод для аннотаций. И они тоже могут чередоваться?) хехе)
И вот этих _q может быть много. Ты представляешь себе этот хаос?)))
Дели на разные репозитории
Не. Ты как и я не так поняли смысл репозитория. Мы его не правильно себе представляли) и походу до меня доперло что не так) у нас должно быть свойство query, которое будет хранить в себе queryset, и внутри, репа будет работать именно с ним, а по методу например get_books() она будет возвращать список с тем что она в результате получила. Это прям помогло мне с другой стороны на репозитории взглянуть) И по ощущениям это действительно верный подход)
суть репозитория: вот у меня приложение написанное на хз каком фреймворке. Я беру репозиторий и делаю get_books() и получаю книги. Что внутр ирепы при этом происходит - лично её дело
Обсуждают сегодня