Any hints appreciated. I'm stumped. Traceback at the end.
Many thanks
Mike
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
I have a custom user based on AbstractUser plus a UserProfile model as
follows:
#common.models from django.conf import settings from
django.contrib.auth.models import AbstractUser, Group, UserManager from
django.db import models from django.utils.encoding import
python_2_unicode_compatible @python_2_unicode_compatible class
User(AbstractUser): objects = UserManager() class Meta: abstract = False
def __str__(self): grps = u'' superuser = u'' if self.is_staff:
superuser = u' [Staff]' if self.is_superuser: superuser = u'
[Superuser]' if not self.is_active: superuser += u' [Inactive]' groups =
Group.objects.filter(user=self).order_by('name') if groups: grps = u',
'.join(grp.name for grp in groups) if grps: grps = u' (%s)' % grps grps
+= superuser return u'%s%s' % (self.username, grps) def save(self,
*args, **kwargs): super(User, self).save(*args, **kwargs) # not sure
whether to use the post-save signal or just save it here profile =
UserProfile.objects.get_or_create(user=self)[0] profile.save()
@python_2_unicode_compatible class UserProfile(models.Model): user =
models.OneToOneField( settings.AUTH_USER_MODEL,
related_name='userprofile', on_delete=models.CASCADE, ) ... created =
models.DateTimeField(auto_now_add=True) modified =
models.DateTimeField(auto_now=True) class Meta: verbose_name = 'user
profile' verbose_name_plural = 'user profile' def __str__(self): return
u'%s' % self.user
The error occurs when I click [Register] with a new user via the
following view:
#common.views from django.contrib.auth import login, authenticate from
django.contrib.auth.forms import UserCreationForm from django.shortcuts
import render, redirect def register(request): if request.method ==
'POST': form = UserCreationForm(request.POST) if form.is_valid():
form.save() username = form.cleaned_data.get('username') raw_password =
form.cleaned_data.get('password1') user =
authenticate(username=username, password=raw_password) login(request,
user) return redirect('common.views.homepage') else: form =
UserCreationForm() return render(request, 'register.html', {'form': form})
For completeness here is the template:
#register.html {% extends 'base_site.html' %} {% block content %}
<h2>Register</h2> <form method="post"> {% csrf_token %} {{ form.as_p }}
<button type="submit">Register</button> </form> {% endblock %}
Traceback ...
Environment: Request Method: POST Request URL:
http://localhost:8000/register/ Django Version: 1.11.6 Python Version:
3.6.1 Installed Applications: ['django.contrib.admin',
'django.contrib.admindocs', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.staticfiles',
'django.contrib.sites', 'common', 'course', 'credit'] Installed
Middleware: ['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback:
File
"C:\Users\mike\env\xxct3\lib\site-packages\django\core\handlers\exception.py"
in inner 41. response = get_response(request) File
"C:\Users\mike\env\xxct3\lib\site-packages\django\core\handlers\base.py"
in _get_response 187. response = self.process_exception_by_middleware(e,
request) File
"C:\Users\mike\env\xxct3\lib\site-packages\django\core\handlers\base.py"
in _get_response 185. response = wrapped_callback(request,
*callback_args, **callback_kwargs) File
"C:\Users\mike\env\xxct3\train\common\views.py" in register 36. if
form.is_valid(): File
"C:\Users\mike\env\xxct3\lib\site-packages\django\forms\forms.py" in
is_valid 183. return self.is_bound and not self.errors File
"C:\Users\mike\env\xxct3\lib\site-packages\django\forms\forms.py" in
errors 175. self.full_clean() File
"C:\Users\mike\env\xxct3\lib\site-packages\django\forms\forms.py" in
full_clean 386. self._post_clean() File
"C:\Users\mike\env\xxct3\lib\site-packages\django\forms\models.py" in
_post_clean 413. self.instance.full_clean(exclude=exclude,
validate_unique=False) File
"C:\Users\mike\env\xxct3\lib\site-packages\django\db\models\base.py" in
full_clean 1235. self.clean() File
"C:\Users\mike\env\xxct3\lib\site-packages\django\contrib\auth\models.py"
in clean 349. self.email =
self.__class__.objects.normalize_email(self.email) File
"C:\Users\mike\env\xxct3\lib\site-packages\django\db\models\manager.py"
in __get__ 198. cls._meta.swapped, Exception Type: AttributeError at
/register/ Exception Value: Manager isn't available; 'auth.User' has
been swapped for 'common.User'
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/0d3930be-30cb-8dc8-d0c9-a8f34e46e781%40dewhirst.com.au.
For more options, visit https://groups.google.com/d/optout.