Przeprowadziłem migrację do niestandardowego modelu użytkownika Django (CustomUser), na który kilka innych modeli ma relacje klucza obcego i M2M. CustomUser jest również podklasowany przez autorski model Zinni (Autor) - Zinnia to doskonała aplikacja do blogowania stron trzecich.Django niestandardowy model użytkownika podklasowany (przez Zinnia)
Mój problem polega na tym, że kiedy uzyskuję dostęp do CustomUser poprzez relację np. OtherModel.customuser, zwraca ona instancję CustomUser, ale w moich widokach, gdy uzyskuję dostęp do request.User, jest to instancja Author. Ponieważ atrybuty Author i CustomUser są identyczne, ogólnie rzecz biorąc nie robi to wielkiej różnicy, ale jeśli chcę przetestować równoważność obiektów użytkowników w moich widokach, muszę do użytkownika request.user.id zamiast request.user, a ja instynktownie nie " T jak dwuznaczność, z którym mam do czynienia.
Prawdopodobnie lepiej przechodzę nad tym i zostawiam rzeczy takimi, jakie są, ponieważ wszystko działa po kilku drobnych zmianach kodu w moich widokach. Jednak w idealnym świecie odnoszę się konsekwentnie do tego samego modelu użytkownika, ale nie jestem pewien, jak najlepiej postępować. Jakieś pomysły?
settings.py
AUTH_USER_MODEL = 'profiles.CustomUser'
models.py (w profilach aplikacji)
class CustomUser(AbstractUser):
visits = models.PositiveIntegerField(
_('visits'),
default=0,
blank=True
)
def __unicode__(self):
return self.username
class OtherModel(models.Model):
author = models.ForeignKey(CustomUser)
wiem zalecenie w documentation jest, aby relacje z settings.AUTH_USER_MODEL zamiast bezpośrednio z niestandardowy model użytkownika. Mam zamiar to zmienić, ale chce zrozumieć, co robię przed uruchomieniem ponownie pod groźbą migracji
author.py (w cynia aplikacji)
from django.contrib.auth import get_user_model
@python_2_unicode_compatible
class Author(get_user_model()):
"""
Proxy model around :class:`django.contrib.auth.models.get_user_model`.
"""
objects = get_user_model()._default_manager
published = EntryRelatedPublishedManager()
W get_user_model konsoli() zwraca profili .models.CustomUser klasa
mam takie same kwestia. Znalazłeś rozwiązanie? – Blaise