Вопрос по django-users, django, django-authentication, django-cms, django-models – django 1.5 расширяет модель пользователя по умолчанию или заменяет ее

3

Env: Django 1.5.1 + Django CMS 2.4.1 + Zinnia последние + мои пользовательские приложения + пользовательский плагин Django CMS

По сути, я могу расширить стандартную модель пользователя Django (1.5.X), напримерДжанго Риббит Учебник по NetTuts +

или же

Заменить полностью настроенную модель, какДжанго Дев док или Django2Scoops пример в абзаце: «Работа с моделью пользователя »

Чтобы проверить, я решил для Подкласса AbstractUser Из книги Django2Scoops: "Выберите этот вариант, если вам нравится Django ’s Поля модели пользователя такими, какие они есть, но нуждаются в дополнительных ... полях. "

Но у меня есть следующие ошибки:

Notificationsetting: 'пользователь» определяет отношение с модельюauth.User», который был заменен. Обновите отношение, чтобы указать в настройках. AUTH_USER_MODEL. cmsplugin_zinnia.latestentriesplugin: 'авторы' определяет отношение с модельюauth.User», который был заменен. Обновите отношение, чтобы указать в настройках. AUTH_USER_MODEL.

cms.pageuser: 'создано' определяет отношение с модельюauth.User», который был заменен. Обновите отношение, чтобы указать в настройках. AUTH_USER_MODEL. cms.pageusergroup: 'создано' определяет отношение с модельюauth.User», который был заменен. Обновите отношение, чтобы указать в настройках. AUTH_USER_MODEL.

После нескольких часов чтения и тестирования я нашел

Указание пользовательской модели пользователя (расширяет AbstractUser) нет работа

Как говорится в сообщении об ошибке - вам нужно обновить отношение, чтобы указать в настройках. AUTH_USER_MODEL. Вторая ошибка ("Модель поменялась… ») является побочным эффектом того факта, что вынепосредственно ссылаясь на модель пользователя. Как только вы измените ссылки ForieignKey, эта третья ошибка исчезнет. Мы'мы сделали все возможное, чтобы обеспечить плавный переход к новой модели пользователя, но этобыть полностью прозрачным. Разработчики приложений должны будут обновить свои приложения до версии 1.5. По сути, приложение Django 1.4 выигралобыть на 100% совместимым с Django 1.5, если он содержит жестко заданную ссылку на внешний ключ пользователя. Пожалуйста, не могли бы вы дать мне больше примеров?

А такжеDjango / Python: обновите отношение, чтобы указать в настройках.AUTH_USER_MODEL

в settings_example.py у вас есть AUTH_USER_MODEL = 'users.User», Однако вы используете приложение - menu.bookmark, которое имеет отношение к django.contrib.auth.User - вы можете 'у меня есть оба. Установка AUTH_USER_MODEL означает, что вы заменяете встроенную пользовательскую модель Django своей собственной. Увидетьhttp://procrastinatingdev.com/django/using-configurable-user-models-in-django-1-5/ для деталей.

Но я неЯ не понимаю, как я могу решить это.

Что мне понадобится:

-Пользователи связаны с институтом класса (один институт -> больше пользователей)

-Пользователи или институты могут иметь разные разрешения и видеть разные страницы / плагин django cms.

-Некоторые дополнительные поля для пользователя.

Подкласс AbstractUser правильная точка?

Как я могу решить "поменялся ошибка?

Я должен создать что-то похожее наКод OpenTreeMap

Isn»Т не рекомендуется этот код?

Спасибо!

github.com/divio/django-cms/issues/1798 CMS django в настоящее время не поддерживает AUTH_USER_MODEL. Следовательно, что я могу сделать? Daviddd

Ваш Ответ

2   ответа
1

https://github.com/divio/django-cms/issues/1798.

Есть четыре возможных варианта:

Если вам нужно, чтобы ваша пользовательская модель пользователя имела имя, отличное от User, вы 'нужно подождатьВы можете вызвать пользовательскую модельUser - хотя, когда я попробовал это, я получил ошибки о столкновениях с соответствующими полями m2m. Есть несколько дополнительных деталей по вышеуказанной ссылке, которые могут помочь решить эту проблему.Django 1.5 все еще позволяет вам использовать профили пользователей. Поэтому, если вы согласны с использованием устаревшей функции, вы все равно можете использовать Django-CMS 2.4 и Django 1.5 с пользовательскими профилями вместо пользовательской пользовательской модели. (Я неправильно прочитал здесь документы Django и думал, что профили пользователей не поддерживаются в Django 1.5.)Часто вы можете уйти без профиля пользователя или пользовательской модели - их лучше всего использовать для добавления данных специально для аутентификации пользователя. Вместо этого вы можете использовать другую модель с отношением один к одномуUserи используйте обратную связь для доступа к ней.

Для моего случая я собираюсь пойти с # 3 в краткосрочной перспективе и # 4 в долгосрочной перспективе.

Надеюсь, это поможет!

Спасибо Гоночный Головастик! Как и вы, я собираюсь пойти с # 3 и # 4 в долгосрочной перспективе. Документ не был так ясен + книга Dajngo2Scoops говорит:Вариант 3: Подкласс AbstractBaseUser ": AbstractBaseUser - пустая опция с: паролем, последним входом в систему и активна. 1) Вынедовольны полями, которые модель пользователя предоставляет по умолчанию, такими как имя и фамилия. 2) Вы предпочитаете создавать подклассы с абсолютно чистого листа, но хотите воспользоваться разумным подходом по умолчанию AbstractBaseUser для хранения паролей. Daviddd
5

льзовательский пользователь перед импортом CMSPlugin. Пример:

from django.db import models
from django.contrib.auth import models as auth_models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
  telephone = models.CharField(max_length=100)
  email = models.CharField(max_length=100)

auth_models.User = User

from cms.models import CMSPlugin

Похожие вопросы