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”

 

Popular posts from this blog

MCSL 216 MCA NEW Practical ~ common questions suggestions

jitsi

Dev Cheatsheet