Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » South, аттрибуты и методы модели, AttributeError [RSS Feed]

#1 Март 12, 2013 08:48:24

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

South, аттрибуты и методы модели, AttributeError

Нужно добавить поле в модели и автоматически его заполнять. Для автоматического заполнения переопределил метод save, в нем вызываю метод, который генерирует значение для этого поля (например generate_my_field). Не получается автоматически заполнить его при миграции: в комментариях в файле, который генерирует south написано следующее

# Note: Remember to use orm['appname.ModelName'] rather than "from appname.models..."
но при попытке вызвать метод у объекта получаю AttributeError.
for obj in orm.ModelName.objects.all():
  obj.my_field = obj.generate_my_field()
  obj.save()
AttributeError: 'ModelName' object has no attribute 'generate_my_field'
Что за класс лежит в orm и где определенные мной аттрибуты и методы?



Отредактировано svas (Март 12, 2013 08:49:29)

Офлайн

#2 Март 12, 2013 10:30:37

alafin
Root
От: Киев, Украина
Зарегистрирован: 2006-04-06
Сообщения: 756
Репутация: +  3  -
Профиль   Отправить e-mail  

South, аттрибуты и методы модели, AttributeError

Правильнее делать:
1) Мигрировать схему - schemamigration
2) Мигрировать данные - datamigration

А не объединять это все в schemamigration. Конструкция вида

orm.ModelName.objects.all()
обычно пишутся в DataMigration, а если бы это было schemigration то надо было бы писать как-то так
orm['appname.ModelName']

Покажите описание класса ModelName и класс с миграцией, а то так сразу трудно сказать в чем проблема.



Отредактировано alafin (Март 12, 2013 10:34:49)

Офлайн

#3 Март 12, 2013 20:55:36

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

South, аттрибуты и методы модели, AttributeError

alafin
Правильнее делать:
1) Мигрировать схему - schemamigration
2) Мигрировать данные - datamigration
Я так и делал.



Отредактировано svas (Март 13, 2013 19:29:53)

Офлайн

#4 Март 13, 2013 10:26:04

alafin
Root
От: Киев, Украина
Зарегистрирован: 2006-04-06
Сообщения: 756
Репутация: +  3  -
Профиль   Отправить e-mail  

South, аттрибуты и методы модели, AttributeError

svas, это политика South, не давать возможности пользоваться методами моделей, связано это с тем что методы моделей могу эволюционировать т.е. удаляться/изменяться методы моделей, а миграции не должны от этого зависеть поэтому South предлагает копировать логику моделей в саму миграцию тем самым вы себя обезопасите от эволюционирования моделей т.е. сможете в любой момент как откатить изменения так и накатить их обратно.

Более подробно http://south.readthedocs.org/en/latest/ormfreezing.html#rationale-behind-the-serialisation



Офлайн

#5 Март 13, 2013 12:11:09

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

South, аттрибуты и методы модели, AttributeError

Ясно, спасибо



Офлайн

  • Начало
  • » Django
  • » South, аттрибуты и методы модели, AttributeError[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version