Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 26, 2011 09:46:58

mc
От:
Зарегистрирован: 2011-09-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

динамическое создание полей модели

Описываю модель, в которой есть много полей одинакового типа, создавать их в ручную лень =)
Можно ли как то создать их динамически? Например, так:

    desc = [
['test',u'Парковка'],
['test2',u'Кухня'],
]
for i in desc:
eval(i[0]) = models.CharField(max_length=255, verbose_name=i[1])
приведенный код не работает, ‘can’t assign to function call' =(



Офлайн

#2 Сен. 26, 2011 12:01:22

maxwell
От:
Зарегистрирован: 2008-08-26
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

динамическое создание полей модели

# -*- coding: utf-8 -*-
desc = [['test',u'Парковка'],
['test2',u'Кухня'],
]

for d in desc:
print '%s = models.CharField(max_length = 255, verbose_name=\'%s\')' % (d[0], d[1])
Потом копипаст в models.py



Офлайн

#3 Сен. 26, 2011 12:25:36

mc
От:
Зарегистрирован: 2011-09-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

динамическое создание полей модели

а динамически это ни как не сделать?
Ещё вопрос =) Как создать записи в БД согласно этим полям, syncdb их не создает, только south?



Офлайн

#4 Сен. 26, 2011 13:06:10

maxwell
От:
Зарегистрирован: 2008-08-26
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

динамическое создание полей модели

mc, они потом в процессе работы будут меняться? Или набор полей заранее известен, просто их много?
Во-втором случае, лучше как описал я. В-первом, там надо постоянно синхронизировать модель с базой.

syncdb создает записи в БД, но лучше все-равно использовать south (довольно удобная штука, в случае если вдруг поменялась модель, а в базе уже есть 1000 записей и сносить таблицу/добавлять по-новой неохота)



Офлайн

#5 Окт. 25, 2011 18:24:32

inlanger
От:
Зарегистрирован: 2009-01-17
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

динамическое создание полей модели

С такой задачей Вам нужны документно-ориентированные БД, например MongoDB. И часть данных хранить именно в этой БД.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version