Mam aplikację Django, która pozwala na różne rodzaje użytkowników: firmy, administratorzy, osoby z zewnątrz itp. Oczywiście wszystko to jest łatwe do zarządzania z domyślnym systemem uwierzytelniania i grupami.Django - Profile użytkowników różnych typów
Moim problemem jest to, że użytkownicy należący do różnych grup będą mieli różne powiązane informacje - na przykład firmy będą musiały dostarczyć informacji handlowych, które nie mają sensu dla użytkowników prywatnych. Dlatego muszę dołączyć różne rodzaje profili, w zależności od grupy. (W moich grupach aplikacji wzajemnie się wykluczam.)
Niestety, Django zezwala tylko na dołączenie pojedynczego modelu jako profilu, a ten model jest zadeklarowany w settings.AUTH_PROFILE_MODULE
. Wewnętrznie, który jest pobierany przez metodę User.get_profile()
, która w zasadzie po prostu odczytuje tę wartość i wykonuje pewne sprawdzenia, na przykład, że model faktycznie istnieje.
Zastanawiam się nad podklasowaniem User
i nadpisaniem metody get_profile()
, dzięki czemu zwraca ona inny model w zależności od grupy.
Is there a simpler/cleaner way to manage different kind of profiles?
To, co proponuję, wydaje się trochę hackować, biorąc pod uwagę, że profile użytkowników zostały wprowadzone dokładnie w celu uniknięcia konieczności posiadania podklasy Użytkownik.
Okazuje się, że jest to najprostszy sposób. Moim problemem jest teraz zagwarantowanie, że te profile są rzeczywiście wypełniane przez administratora. http://stackoverflow.com/questions/6681464/django-admin-validating-inlines-together-with-main-models – Andrea
Ten model użytkownika nie jest domyślną rzeczą, która pochodzi z Django, prawda? Ponieważ dostaję 'NameError: nazwa 'Użytkownik' nie jest zdefiniowany' kiedy próbuję tego –
@JulioMarins Tak, powinieneś go zaimportować:' from django.contrib.auth.models import User'' – DrTyrsa