2015-06-28 10 views
2

Я создал пользовательскую модель в Django, и она отлично работала. Тем не менее, я решил создать пользовательскую модель в соответствии с моими потребностями после запуска и запуска проекта.Миграция с auth_user в Django

В результате, мне нужно будет перенести схему (В настоящее время, когда я зарегистрировать пользователь, код по-прежнему ссылается на таблицы auth_user базы данных, где, как новая таблица пользовательского пользователь является user.)

Я установил AUTH_USER_MODEL в settings.py в userapp.User, где userapp - мое пользовательское приложение, а User - это модель, которая наследуется от модели AbstractUser.

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

Как мне перенести? Я слышал, что для этого используется South, но я не знаю, как его использовать. Кроме того, я думаю, что South не требуется в последних версиях Django.

Моя версия Django - 1.8.2.

+0

Не отвечая на ваш вопрос, но см [мой ответ здесь] (http://stackoverflow.com/questions/31100063/django-problems-with-user-model/31100276#31100276). Расширение «Пользователь» может быть вариантом вместо замены модели. Возможно, вы можете избавить вас от головной боли. – Mischback

+0

Привет @Mischback, это то, что я делаю в основном - просто добавление некоторых полей в мою модель пользователя. И да, официальные документы Django предлагают реализовать «Индивидуальную связь» с моделью пользователя. Не могли бы вы рассказать мне, как это сделать (или предоставить примерную ссылку) и как я могу использовать это для сохранения новых данных + в формах. –

+0

Никогда не делал этого сам, но я бы создал совершенно независимое приложение с моделью «Профиль». Просто напишите обычное приложение с формами, URL-адресами и т. Д. Просто привяжите его к существующей/используемой пользовательской модели, добавив поле «OneToOne» к вашей модели, ссылаясь на «settings.AUTH_USER_MODEL» и не разрешайте этому полю NULL , – Mischback

ответ

0

Я сделал это недавно - мы использовали data migration для перемещения между двумя моделями. Грубые шаги:

  1. Создать новую пользовательскую модель (не говоря Джанго об этом), сделать/применить миграции для создания таблицы базы данных (ы)
  2. Написать дата-миграции в копию данные через к новой модели пользователя. Затем запустите эту миграцию и обновить Django использовать новую модель
  3. Теперь вы должны быть переключены, и может удалять/архив старого auth_user таблицы необходимо
+0

Я сделал примерно то же самое - создал новую модель пользователя, добавил ее в 'AUTH_USER_MODEL' и использовал' ./manage.py makemigrations', за которым следует './manage.py migrate'. Когда я пытаюсь зарегистрировать новых пользователей, он говорит, что нарушение ограничения внешнего ключа - ключ не найден в 'auth_user', хотя я больше не использую эту таблицу. –

+0

@GauravWadhwani Какой иностранный ключ он ищет? И регистрируете ли вы новых пользователей через веб-интерфейс или интерфейс CLI? – Fizzadar

+0

Привет @Fizzadar .. Регистрация новых пользователей через веб-интерфейс. Я получаю «Ошибка целостности: вставка или обновление в таблице» customer_email »нарушает ограничение внешнего ключа« customer_email_user_id_8eeb3a31aa9371c_fk_auth_user_id » ДЕТАЛИ: Ключ (user_id) = (17) нет в таблице« auth_user ».' –

Смежные вопросы