Создание миграций для приложения auth в django

Мне нужно добавить пару полей в модель группы в приложении django contrib.auth, используя:

field_name = models.CharField(...)
field_name.contribute_to_class(Group, 'field_name')

Моя проблема заключается в создании миграций с помощью South, поскольку они создаются в каталоге «migrations» внутри приложения auth, и, поскольку система уже находится в производстве, мне не разрешено изменять текущую установку django на сервере, чтобы для переноса auth.

Кто-нибудь знает, как создавать и загружать такие миграции?

Заранее спасибо за помощь.


person Gerard    schedule 15.05.2012    source источник


Ответы (2)


Django не позволяет легко изменять стандартные модели. Я бы не рекомендовал создавать подкласс Group, потому что вместо этого получить встроенные функции для ссылки на новую модель довольно неприятно.

Обычно здесь нужно создать GroupProfile модель, которая имеет Group в качестве уникального внешнего ключа. Это может быть не изящно, но у него не будет огромных накладных расходов на обслуживание, связанных с разветвлением исходного кода Django.

Также: если вы не можете изменить код Django на сервере, вы не сможете сделать это с помощью необработанного взлома SQL или умной миграции. Юг не будет проблемой - проблема в том, что Django ORM заметит, что в таблице SQL есть поля, которые не указаны в коде, что вызовет исключение.

person lionel b    schedule 16.05.2012

Поскольку вы используете хак для исправления модели, я думаю, вам следует написать миграцию вручную. Попробуйте скопировать еще одну миграцию и сначала изменить add_column и models, в случае неудачи - всегда есть опция с именем "raw sql" :)

person ilvar    schedule 16.05.2012