Skip to content

Instantly share code, notes, and snippets.

@matheussl
Last active July 26, 2018 01:32
Show Gist options
  • Save matheussl/5715623 to your computer and use it in GitHub Desktop.
Save matheussl/5715623 to your computer and use it in GitHub Desktop.
Django 1.5: Add suport to create and edit custom users. SiteUser is identical to auth.User
from django.contrib import admin
from forms import SiteUserCreationForm, SiteUserChangeForm
from django.contrib.auth.admin import UserAdmin
from models import SiteUser
class SiteUserAdmin(UserAdmin):
form = SiteUserChangeForm
add_form = SiteUserCreationForm
admin.site.register(SiteUser, SiteUserAdmin)
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from models import SiteUser
class SiteUserCreationForm(UserCreationForm):
class Meta:
model = SiteUser
fields = ('username',)
def clean_username(self):
# Since User.username is unique, this check is redundant,
# but it sets a nicer error message than the ORM. See #13147.
username = self.cleaned_data["username"]
try:
SiteUser._default_manager.get(username=username)
except SiteUser.DoesNotExist:
return username
raise forms.ValidationError(self.error_messages['duplicate_username'])
class SiteUserChangeForm(UserChangeForm):
class Meta:
model = SiteUser
from django.db import models
from django.contrib.auth.models import AbstractUser
class SiteUser(AbstractUser):
photo = models.ImageField(upload_to='users/photos', null=True, blank=True, verbose_name='foto')
cpf = models.CharField(max_length=11, null=True, blank=True, verbose_name='CPF')
phone = models.CharField(max_length=200, null=True, blank=True, verbose_name='telefone')
state = models.ForeignKey(State, null=True, blank=True, verbose_name='estado')
cep = models.CharField(max_length=9, null=True, blank=True, verbose_name='CEP')
is_student = models.BooleanField(default=False, verbose_name='é aluno?')
class Meta:
abstract = False
verbose_name = 'Usuário'
verbose_name_plural = 'Usuários'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment