Джанго выдает ошибку в поле модели для неверной базы данных - PullRequest
0 голосов
/ 28 июня 2018

У меня есть две базы данных, настроенные для моего проекта Django, MySQL и Postgres.

У меня есть маршрутизатор базы данных, и все работало нормально, пока я не изменил CharField с max_length из 300 в модели Postgres на уникальный.

Эта модель в Postgres, но теперь Django выдает эту ошибку о MySQL:

[postgres_app.TestModel.slug]: (mysql.E001) MySQL does not allow unique CharFields to have a max_length > 255.

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

POSTGRES_APPS = ['postgres_app']


class PostgresRouter(object):
    """ Controls which apps can have access to the postgres instance. """

    def db_for_read(self, model, **hints):
        """ Called on every read action on a model. """
        if model._meta.app_label in POSTGRES_APPS:
            return 'postgres'
        return None

    def db_for_write(self, model, **hints):
        """ Called on every write action on a model. """
        if model._meta.app_label in POSTGRES_APPS:
            return 'postgres'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        """ Called only on migrations. Only allow relations if both models are in POSTGRES_APPS. """
        return {obj1._meta.app_label, obj2._meta.app_label}.issubset(set(POSTGRES_APPS)) or None

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        """ Called only on migrations. """
        if db == 'postgres':
            return app_label in POSTGRES_APPS
        else:
            return app_label not in POSTGRES_APPS

а это моя модель:

class TestModel(models.Model):
    slug = models.CharField(max_length=300, blank=True, null=True, unique=True)

Таким образом, вопрос в том, является ли это ошибкой в ​​Django или нет, и если нет, то как я могу сказать Django, что она ищет неправильную базу данных.

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