У нас есть фиктивный модуль 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
, и не имеет значения, с какими конкретными миграциями реализации выполняется.