Пользовательские модели и юг
я пытаюсь использовать пользовательскую модель самым простым способом, расширяяAbstractUser
как описано вРасширяя ДжангоПользователь по умолчанию, Но я'Я не уверен, как правильно заставить это работать с Югом. Я'сталкиваюсь с проблемой при выполнении начальной миграции схемы с помощью Here 'Что случилось: я
у меня есть расширенный класс пользователя,Player
, в моем классеtournaments
, который включен в.settings.INSTALLED_APPS
Выполнить начальныйsyncdb
,tournaments
приложение должно быть включено. В противном случае я получаю эту ошибку:
$ ./manage.py syncdb
CommandError: One or more models did not validate:
auth.user: Model has been swapped out for 'tournaments.Player' which has not been installed or is abstract.
admin.logentry: 'user' has a relation with model tournaments.Player, which has either not been installed or is abstract.
Итак, я включаюtournaments
приложение, которое имеет мойPlayer
(пользовательский) модель. Но потом, при начальной миграции:
$ ./manage.py schemamigration tournaments --initial
...
$ ./manage.py migrate tournaments
Running migrations for tournaments:
- Migrating forwards to 0001_initial.
> tournaments:0001_initial
FATAL ERROR - The following SQL query failed: CREATE TABLE "tournaments_player" ("id" serial NOT NULL PRIMARY KEY, "password" varchar(128) NOT NULL, "last_login" timestamp with time zone NOT NULL, "is_superuser" boolean NOT NULL, "username" varchar(30) NOT NULL UNIQUE, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL, "email" varchar(75) NOT NULL, "is_staff" boolean NOT NULL, "is_active" boolean NOT NULL, "date_joined" timestamp with time zone NOT NULL, "bio" text NOT NULL);
The error was: relation "tournaments_player" already exists
Error in migration: tournaments:0001_initial
DatabaseError: relation "tournaments_player" already exists
Если я пропущуsyncdb
Я получаю эту ошибку, потому чтоsyncdb
необходимо для начальной загрузки на юг:
$ ./manage.py migrate tournaments
DatabaseError: relation "south_migrationhistory" does not exist
LINE 1: ...gration", "south_migrationhistory"."applied" FROM "south_mig...
Итак, похоже, что яу меня ситуация с курицей и яйцом: я не могуsyncdb
без моей модели пользователя. Но если яsyncdb
с моей моделью пользователя, я могувыполнить первоначальную миграцию!
Каков наилучший способ обойти это? Я'У меня есть некоторые идеи, такие как запуск начальногоsyncdb
безdjango.contrib.auth
а такжеdjango.contrib.admin
включен или работает начальныйsyncdb
безsouth
включил и затем конвертировал приложение. Оба варианта кажутся хаккейными и странными.