Найти - Пользователи
Полная версия: меню сайта - как правильно сделать
Начало » Django » меню сайта - как правильно сделать
1 2
asstet
Добрый день.
На сайте есть один вид товара, разбитый по категориям.
Категории хранятся как константа внутри класса описывающего товар и в админке выглядят как выпадающий список.
Нужно иметь возможность редактировать этот список.
Создавать ли для категории отдельный класс (список категорий совсем небольшой), либо это можно сделать другими методами, например хранить его как xml файл, либо еще как-то.
Буду рад любым идеям, спасибо.
Ferroman
Редактировать, я так понимаю, из админки? Тогда лучше сделать новую модель и связать с товарами.
asstet
Спасибо.
Просто немного принципиально не понимаю смысл хранения этих скажем пяти категорий в отдельной таблице бд, но догадываюсь, что в этом случае это самый быстрый и безболезненный результат.
Ferroman
Количество тут не главное. Главное что тогда эти категории можно менять штатными средствами, просто пользователю. И очень просто.
Maddy
Хм , а может все-таким сначала книжку про БД и 3НФ почитать ? Сразу масса вопросо отвалиться .. Как сказанно выше количество (если не считать вырожденных сллучаев ) не главное … Намного лучше изначально иметь правильную структуро объектов …. Сегодня нужен список , завтра - дерево ;) Потом ссылки на пачку товаров из категории ( m:m) Такчто IMHO имеет смысл сразу правильно делать ;)
Александр Кошелев
Maddy
Хм , а может все-таким сначала книжку про БД и 3НФ почитать ?
И отложить подальше:-) Зачастую в Вебе теория с практикой очень расходятся.
Maddy
Daevaorn
И отложить подальше:-) Зачастую в Вебе теория с практикой очень расходятся.
Хм …. А с чего ? Пример можно ? Все-ведь зависит от задачи …..
А и чем задача под веб отличаеться ( по работе с БД) от не веба ? Раз уж данговский ОРМ влоб ползует реляционную модель - то наверное все-таки имеет смысл очевидные грабли обойти ?
PS не наезда ради - а информация для ;) Самому интересно , так-как питоном пользуюсь двано , но с точки зрения инструмента быстро макет сляпать ;) А потом ползем на ++ :( А щаз вздумалось джангу освоить - вот и интересно чем оно от взрослой жизни отличается в плане БД ?
Александр Кошелев
Maddy
А и чем задача под веб отличаеться ( по работе с БД) от не веба ?
Так общей спецификой веба как сервиса для пользователей с заданой производительностью. Он (пользовтаель) не будет 15 минут ждать пока ему отчет сгенерирует СУБД, “приджоинивая” 10 таблиц в одном запросе.
Maddy
Раз уж данговский ОРМ влоб ползует реляционную модель - то наверное все-таки имеет смысл очевидные грабли обойти ?
Так вот если влоб использовать джанговский ORM, то на грабли как раз и набредете. С ним надо аккуратно очень работать, чтобы не получить совсем большую просадку в производительности.
Maddy
Хм …. А с чего ? Пример можно ? Все-ведь зависит от задачи …..
Конечно от задачи. Ну вот допустим число комментариев к посту в блог - в 99% случае выгоднее держать денормализованным полем. И так очень во многом.
Maddy
Daevaorn
Так общей спецификой веба как сервиса для пользователей с заданой производительностью. Он (пользовтаель) не будет 15 минут ждать пока ему отчет сгенерирует СУБД, “приджоинивая” 10 таблиц в одном запросе.
Ну это опять-таки смотря что за пользователь - если вольный серфер , то да … а если пользователь корпоратифффки - куды ему деваться - если велено “смотреть здеся!!!” ;)
Daevaorn
Так вот если влоб использовать джанговский ORM, то на грабли как раз и набредете. С ним надо аккуратно очень работать, чтобы не получить совсем большую просадку в производительности.
А примеры возможных граблей можно ?
Daevaorn
Конечно от задачи. Ну вот допустим число комментариев к посту в блог - в 99% случае выгоднее держать денормализованным полем. И так очень во многом.
Это всмысле поле в таблице (в модели) или поле со списком id'шек коментов ?
Александр Кошелев
Maddy
Ну это опять-таки смотря что за пользователь - если вольный серфер , то да … а если пользователь корпоратифффки - куды ему деваться - если велено “смотреть здеся!!!” wink
И строем ходить:-) Заставить всегда можно, но лучше время ожидания сокращать всё-таки.
Maddy
А примеры возможных граблей можно ?
Банальнейший пример:
class Article(models.Model):
author = models.ForeignKey(User)


# ...
articles = Article.objects.all()
# ...
{% for article in articles %}
<!-- ... -->
<p>Author: {{article.author}}</p>
<!-- ... -->
{% endfor %}
Итого N+1 лишних запросов к базе, где N=число статей. Вот вам и ORM. Хорошо, что данная проблема решается штатными средствами, но есть и другие, которые не так просто разруливаются.
Maddy
Это всмысле поле в таблице (в модели) или поле со списком id'шек коментов ?
Пока говорим о количестве комментариев - просто целочисленное поле с числом.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB