basic CRUD with serializers + model in django

 Serializers.py

from rest_framework import serializers

 

from django.contrib.auth.hashers import make_password

 

from core.models import Member

 

class UserSerializer(serializers.ModelSerializer):

    class Meta:

        model = Member

        fields = "__all__"

 

    def create(self, validated_data):

        password = validated_data.get('password')

        member = Member(

            name = validated_data.get('name'),

            email = validated_data.get('email'),

            password = make_password(password),

            address = validated_data.get('address'),

        )

        member.save()

        return member

    

    def update(self, instance, validated_data):

        password = validated_data.get('password', instance.password)

        instance.name = validated_data.get('name', instance.name)

        instance.email = validated_data.get('email', instance.email)

        instance.password = make_password(password)

        instance.address = validated_data.get('address', instance.address)

        instance.save()

        return instance

 

 

Core/Models.py

from django.db import models

from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin

 

class MemberManager(BaseUserManager):

    def create_user(self,name,email,password):

        if not name:

            raise ValueError("name field required")

        if not email:

            raise ValueError("email field required")

        if not password:

            raise ValueError("password field required")

 

        user = self.model(name=name,email=self.normalize_email(email))        

        user.set_password(password)

        user.save(using = self._db)

        return user

    

    def create_superuser(self,name,email,password):

        user = self.create_user(name=name,email=email,password=password)

        user.is_admin = True

        user.is_staff = True

        user.is_superuser = False

        user.save(using = self._db)

        return user

 

class Member(AbstractBaseUser):

    name = models.CharField(max_length=200)

    email = models.EmailField(max_length=200,unique=True)

    password = models.CharField(max_length=250)

    address = models.TextField()

    is_active = models.BooleanField(default=True)

    is_manager = models.BooleanField(default=False)

    is_staff = models.BooleanField(default=False)

    is_superuser = models.BooleanField(default=False)

 

    objects = MemberManager()

 

    USERNAME_FIELD = 'email'

    REQUIRED_FIELDS = ['name']

 

    def has_perm(self, perm, obj=None):

        return self.is_superuser

 

    def has_module_perms(self, app_label):

        return self.is_superuser

 

    def __str__(self):

        return self.name

 

 

 

Views.py

from django.shortcuts import render

 

from rest_framework.views import APIView

from rest_framework.response import Response

from rest_framework import status

 

from .serializers import *

 

class UserList(APIView):

    def get(self, request, format=None):

        return Response({"message":"new record fetched!"})

    

    def post(self, request, format=None):

        data = request.data

        try:

            user = UserSerializer(data=data)

            if user.is_valid(raise_exception=True):

                user.save()

                return Response({"message":"record saved!"})

            else:

                return Response({"message":"try again!"})

        except Exception as e:

            return Response({"message":"error occured!"})

        

    def put(self, request,pk, format=None):

        data = request.data

        userid = pk

        try:

            if Member.objects.filter(id=userid).exists():

                member_obj = Member.objects.get(id=userid)

                user = UserSerializer(member_obj,data=data)

                if user.is_valid(raise_exception=True):

                    user.save()

                    return Response({"message":"user record updated!"},status=status.HTTP_200_OK)

                else:

                    return Response({"message":"user record not updated!"})

            else:

                return Response({"message":"id not exist!"})

        except Exception as e:

            return Response({"message":"error occured!"},status=status.HTTP_400_BAD_REQUEST)    

    

    def delete(self, request,pk, format=None):

        userid = pk

        data = request.data

        try:

            if Member.objects.filter(id=userid).exists():

                member_obj = Member.objects.get(id=userid)

                if member_obj.delete():

                    return Response({"message":"record deleted!"},status=status.HTTP_204_NO_CONTENT)

                else:

                    return Response({"message":"user record not deleted!"})

            else:

                return Response({"message":"id not exist!"})

        except Exception as e:

            return Response({"message":"error occured!"},status=status.HTTP_400_BAD_REQUEST)

 

Popular posts from this blog

MCSL 216 MCA NEW Practical ~ common questions suggestions

dev chaeatsheet

STRAPI