Django - как расширить сторонние модели без изменений - PullRequest
9 голосов
/ 08 августа 2010

Я хочу добавить столбец в таблицу базы данных, но я не хочу изменять сторонний модуль в случае, если мне нужно / будет решено обновить модуль в будущем.Есть ли способ добавить это поле в мой код, чтобы при новых сборках мне не приходилось добавлять поле вручную?

Ответы [ 2 ]

10 голосов
/ 08 августа 2010

Вы можете использовать ModelName.add_to_class (или .contribute_to_class), но если вы уже запустили syncdb, то нет способа автоматически добавить необходимые столбцы.

Для поддерживаемого кода вы будетевозможно, вы хотите расширить подклассы нужной модели в своем собственном приложении и использовать что-то вроде южной для обработки миграций базы данных, или просто использовать OneToOneField и иметь связанную модель (как UserProfile для auth.User).

0 голосов
/ 08 августа 2010

Взгляните на наследование модели Django и абстрактные классы http://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritance

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...