def getGoodsFromCategory(self, category):
pass
Как лучше сделать ввод категории?
Есть вариант с Enum, но мне вообще не нравится его синтаксис с постоянным .value в конце каждого ввода
Есть вариант сделать тапл со всеми категориями которые есть в магазине, а потом проверять category in category_list
Ещё можно просто обычный класс использовать аля енум, но без мозгодрочива с валюэ в конце.
Всё как-то костыльно, дохрена разных вариантов. Как-то по рубиевски.
1. .value это нормально, но он фактически будет только там где ты конвертируешь значение для внешней системы. 2. категорий обычно число переменное, а не фиксированное на эта разработке. Имеет смысл их положить в БД
хм.... 1. Там по сути только это и будет. Типа категорию пихнуть в запрос и выдать ответ от бд в виде списка. 2. То есть пойти по второму варианту с таплом?
по третьему варианту - с доп таблицей в БД
Пожалуй имеет смысл передавать category_id
на фронте будет прям в кайф пихать непонятные цыфирки в запрос бд
Какой запрос к бд на фронте?
я апи делаю
id это вполне понятные циферки, они у тебя везде
Тогда сделай отдельный эндпоинт на получение всех категорий
хм. Не совсем могу понять. Будет отдельная табличка categories, куда я буду пихать все категории что есть в бд. А на вход в getGoodsFromCategory пихать не название категории, а её айди? Тогда всё равно енум какой-то юзать придется, чтобы обозвать эти циферки в коде.
Зачем их обзывать?
не энум, а нормальные полноценные модельки на несколько полей: айди, название, цвет, родительская категория
С родительской категорией интересно кстати. Нужен будет какой-то рекурсивный sql запрос
не всегда, зависит от реализации дерева, есть штук 5 классических способов. Ну и не всегда нужно рекурсивно товары показывать
Если условиться что в любой категории могут быть и товары и подкатегории- без рекурсии никак
не всегда ты хочешь при этом видеть товары подкатегорий
Разве не все товары будут лететь в какую-то из подкатегорий?
логика может быть очень всратая, заказчики те ещё выдумщики
В категории «хлеб» у тебя могут быть товары «хлеб бородинский», «хлеб тостовый» и подкатегория «батоны»
Поэтому это подкатегория категории хлеб
Ну логично, в том и суть примера
а. Я думал ты про отрицательный пример этого сообщения
Я нигде не видел что-то про какие-то модели. Можно норм статью/гайд на эту тему?
https://docs.sqlalchemy.org/en/20/orm/
Брух. Я пока орм вообще никакие не юзал, на голых запросах живу. Спасибо за наводку
На фронте нет никаких запросов к дб, ты делаешь get на ендпоинт с параметрами в url, или post с параметрами в теле запроса
Ты вообще понимаешь что делаешь?
я изучаю это чтобы понимать
Есть фронт, есть бэк. Фронтенд это код, который работает на компьютере клиента, бэк енд это код, который работает на стороне сервера
Запрос к базе данных должен получать фрон, чтобы отрисовать нужные ячейки с товарами. Для этого нужно их получить. Запрос к апи с нужной категорией. Где я ошибся?
Нет, еще раз говорю -- для своего приложения опиши какая его часть это фронт, а какая его часть это бэк
Фронт к тебя получает текст с данными а не запрос
https://docs.djangoproject.com/en/4.2/ https://angular.io/docs Почитай, подумай, и потом спрашивай
Получается фронтенд должен делать get запрос на товары с фильтром по категории
я об этом и говорил
Ну так делай
Ну вот товар у тебя что?
вплане? Продукты. Да, не спрашивай.
В плане кода
У меня нет модельки товара. Вот бд которая у меня есть сейчас под продукты CREATE TABLE IF NOT EXISTS goods ( id INT PRIMARY KEY, name VARCHAR(255) NOT NULL, available BOOLEAN NOT NULL, price DECIMAL(10, 2) NOT NULL, photo_url VARCHAR(255) NOT NULL, category_id INT NOT NULL );
Я только полез в что-то сложнее простых запросов в бд, и не понимаю как это связать и представлять в коде, так что что-то внятное не покажу
Это бд, а в питон?
Синглтон бд, которая создает эту бд при инициализации и возвращает объект. Не готовый проект, если что.
Хм... не инициализации. Назовём это созданием объекта, я путаюсь в терминах.
товар - это синглтон бд?
я не понимаю про что ты говоришь.
я спросил, что такое товар в твоём коде
бд синглтон товар
У меня нет товара в коде. Я как раз и думал насчёт того, как запихнуть вывод из бд в какую-то модель. Была идея сделать просто что-то аля датакласса с нужными полями, но ты сказал что-то про модель и я сейчас ищу что это такое и как юзать
а с самой БД как работаешь? Есть ОРМ или на голом скл?
https://dpaste.org/Redm2 обоссыте меня, но нежно
это даже не синглтон, а Божественный Объект
у меня не получилось норм синглтон написать со своей головы. васян-решение делал сам
Во-первых никаких синглтонов. Просто создай объект на этапе инициализации приложения и потом везде пробрасывай. Во-вторых - разделение ответственностей. У тебя один и тот же класс выполняет бизнес-логику запроса в базу данных и создает таблицы. Рекоммендую разделить эти действия.
вплане "разделить" ? Пихнуть это в отдельно стоящую функцию?
По-хорошему миграции лучше отдать чему-то вроде алембика или миграторам баз данных. Бизнес-логику запросов для начала можно вынести в Шлюз по-Фаулеру. Гугли TableGateway.
тогда не беспокою.
если товара в коде, а есть в БД, дальше с ним что просходит?
Пожалуйста, перефразируй, я не могу понять о чем ты
Обсуждают сегодня