Форум сайта python.su
Привет.
Ребята подскажите как правильнее решить следующую задачу.
Есть объект, пусть это будет камень.
Объект представлен классом модели:
class Stone(models.Model): name = models.CharField()
{ 'colors': ['red', 'green', 'blue'], 'stone_form':['round', 'square', 'convex'], 'size': ['small', 'medium', 'large'] }
Отредактировано MikaMika (Март 9, 2013 20:25:29)
Офлайн
MikaMika, все зависит от задачи и как в будущем планируется использовать данный функционал.
1) Если все будете хранить в таблицах (Color, StoneForm, Size):
Плюсы: сможете нормально фильтровать записи (если вам конечно это нужно будет для задачи)
Минусы: Нужно создавать для задачи дополнительные таблицы (Color, StoneForm, Size)
2) Если будете хранить записи в JSONField-е (на основе TextField-а)
Плюсы: колонки в таблице будут храниться в читабельном виде (JSON)
Минусы: невозможно будет нормально фильтровать в запросах записи
3) Если будете хранить записи в PickleField:
Плюсы: вменяемых плюсов не знаю :)
Минусы: нечитабельный вид хранения в базе
4) В Postgres-е в версии 9.2 появился JSONField можно взглянуть и на него.
Приложения для JSONField-а:
https://pypi.python.org/pypi/django-jsonfield
https://github.com/bradjasper/django-jsonfield
https://github.com/derek-schaefer/django-json-field
Офлайн
alafin, спасибо.
Открыл для себя “django-annoying”, с его полем JSONField.
Его и использовал.
Офлайн
А чем плох Field.choices?
Офлайн
Griffon, у меня у каждого объекта порядка 40 - 50 атрибутов.
C Field.choices мне нужно делать 40 - 50 полей в модели?
Офлайн
MikaMikaМожет как то так?
Griffon, у меня у каждого объекта порядка 40 - 50 атрибутов.C Field.choices мне нужно делать 40 - 50 полей в модели?
Офлайн