LINUX.ORG.RU

Django и динамически создаваемые поля в модели.

 , ,


2

2

Всем доброго времени суток!

Есть интернет магазин, где куча наименований товаров, и у каждого товара куча свойств и атрибутов. Делать модели для каждого такого товара - дело гиблое, посему возник вопрос: Народ, кто как решает проблему динамически создаваемых полей в джанго? Вообще, какие костыли для этого существуют, какие проблемы могут возникнуть?

Заранее спасибо).

PS. В качестве СУБД используется MySQL.



Последнее исправление: cetjs2 (всего исправлений: 2)

Сделать одну модель для товара и одну для свойство-значение. И связывать их, ставя товару сколько угодно свойств.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Ничего не понимаете, только ddl в продакшоне, только кор-кор:-) В лучших традициях доморощенных ЦМС

anon1984
()
Ответ на: комментарий от djnoob

Модель == таблица в базе. Ты на каждый товар новую таблицу хочешь на лету генерить?

vurdalak ★★★★★
()

Хранить все динамические данные в одном поле в JSON. И сообще вместо MySQL использовать MongoDB.

kvap
()

Есть такой паттерн для проектирования структуры БД для подобных задач, называется он EAV

Но у такого подхода есть как свои плюсы так и минусы. Самый большой минус это «тормознутость» решения. Т.е. при выборке всех полей товара будет выполнятся не самый простой запрос к БД. Кстати решения EAV для Django тоже есть.

Другой вариант это использовать к примеру json поля в той же PostgreSQL начиная с версии 9.3. Например гуглим связку HStore + PostgreSQL. Решения HStore для Django так же есть.

Ну и 3 вариант это конечно NoSQL решение, типа MongoDB или CouchDB.

У каждого решения есть плюсы и минусы, для магазина со средней и ниже посещаемостью сойдет EAV на любой СУБД. Если посещаемость выше тут нужно думать и оценивать.

abc
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.