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) |