custom user model in django
Custom model in django/ drf
Core/Models.py
from django.db import models from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin from django.contrib.auth.models import PermissionsMixin
from core.managers import *
class Member(AbstractBaseUser, PermissionsMixin): first_name = models.CharField(max_length=15) last_name = models.CharField(max_length=15) email = models.EmailField(max_length=200,unique=True) is_active = models.BooleanField(default=True) is_admin = models.BooleanField(default=False) is_staff = models.BooleanField(default=False) is_superuser = models.BooleanField(default=False)
objects = MemberManager()
USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['first_name','last_name']
def __str__(self): return self.email |
Core/managers.py
from django.contrib.auth.models import AbstractBaseUser,BaseUserManager, PermissionsMixin
class MemberManager(BaseUserManager): def create_user(self, email, password, **extra_args): user = self.model(email=self.normalize_email(email), **extra_args) user.set_password(password) user.save(using=self._db) return user
def create_superuser(self, email, password, **extra_args): user = self.create_user(email=email, password=password, **extra_args) user.is_admin = True user.is_staff = True user.is_superuser = True
user.save(using=self._db) return user |
Core/admin.py
from django.contrib import admin from .models import * from django.contrib.auth.admin import UserAdmin
class AccountAdmin(UserAdmin): ordering = ('email','id',) list_display = ("first_name","last_name","email","phone","is_staff","is_superuser","is_active") search_fields = ("first_name","last_name","email") list_filter = ("is_staff","is_active") list_editable = ("is_staff","is_superuser","is_active") exclude = ('username','date_joined') add_fieldsets = ( ( 'Personal Info', { 'fields': ('first_name', 'last_name') } ), ( 'Contact Info', { 'fields': ('email', 'phone'), } ), ( 'Password', { 'fields': ('password1', 'password2',), } ), )
fieldsets = ( ("Contact Info", { 'fields': ( 'email', 'phone', ) } ), ( 'Personal Info', { 'fields': ( 'first_name', 'last_name', ), "classes": ["wide", "extrapretty"], }, ), ( 'Permissions', { 'fields': ( 'is_active', 'is_staff', 'is_superuser', 'groups', ) } ), ( 'Password', { 'fields': ( 'password', ) } ), )
admin.site.register(Member, AccountAdmin) |
Mainapp/settings.py
AUTH_USER_MODEL = “core.Member” |