Южная миграция для фиктивных полей - PullRequest
2 голосов
/ 18 октября 2011

У нас есть фиктивный модуль Python (fields.py) с настраиваемыми полями Django, который загружает реальные реализации на основе настроенной базы данных:

if settings.DATABASES['default']['ENGINE'].find('postgresql') != -1:
  from fields_postgresql import *
else:
  from fields_dummy import *

Причина этого в том, что мы используем расширение PostgreSQL ip4r, которое позволяет красиво (и быстро) работать с полями, содержащими значения IP. Но у нас также есть фиктивные реализации (в коде Python) для других баз данных, так что разработка может быть осуществлена ​​также на SQLite. Поэтому, если вы используете PostgreSQL, эти поля поддерживаются полями с использованием индексов ip4r, а если вы используете какую-либо другую систему баз данных, эти поля являются обычными полями.

Проблема в том, как использовать южные миграции на таких полях. Проблема в том, что add_introspection_rules обнаруживает fields_postgresql и fields_dummy, поэтому это приводит к миграции. Эта проблема возникает позже, если вы хотите применить миграцию, выполненную с помощью SQLite, к установке с PostgreSQL.

Как можно было бы убедить Юга, что это всего лишь модуль fields, и не имеет значения, с какими конкретными миграциями реализации выполняется.

1 Ответ

1 голос
/ 07 ноября 2011

Отключить поддержку SQLite .

Вы правы, если вы не используете свою среду разработки на мобильном телефоне, поддержание собственного сценария миграции на юг просто ради того, чтобы не устанавливать Postgre, вероятно, не стоит хлопот.

Установка Postgre в отличие от поддержки пользовательского кода миграции - это однократное действие, а не непрерывная и потенциально трудоемкая процедура (поскольку вам, возможно, придется изменить свой пользовательский код миграции, чтобы синхронизировать его с новыми выпусками South).

...