Thursday, 8 January 2026

Django #7a Project Sample

Employee Management System – Django (HRMS)

Employee Management System (Django + MySQL)

Roles: Admin, HR, Employee

1. Project Setup


pip install django mysqlclient djangorestframework
django-admin startproject ems_project
cd ems_project
python manage.py startapp accounts
python manage.py startapp employees
python manage.py startapp attendance
python manage.py startapp payroll

2. MySQL Configuration


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'ems_db',
        'USER': 'ems_user',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

AUTH_USER_MODEL = 'accounts.User'

3. Custom User Model (Roles)


from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    ROLE_CHOICES = (
        ('ADMIN', 'Admin'),
        ('HR', 'HR'),
        ('EMP', 'Employee'),
    )
    role = models.CharField(max_length=10, choices=ROLE_CHOICES)

4. Employee Model


from django.db import models
from accounts.models import User

class Department(models.Model):
    name = models.CharField(max_length=100)

class Employee(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    emp_id = models.CharField(max_length=20, unique=True)
    department = models.ForeignKey(Department, on_delete=models.SET_NULL, null=True)
    designation = models.CharField(max_length=100)
    salary = models.DecimalField(max_digits=10, decimal_places=2)
    joining_date = models.DateField()

5. Login View with Role Redirection


from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect

def login_view(request):
    if request.method == 'POST':
        user = authenticate(
            username=request.POST['username'],
            password=request.POST['password']
        )
        if user:
            login(request, user)
            if user.role == 'ADMIN':
                return redirect('admin_dashboard')
            elif user.role == 'HR':
                return redirect('hr_dashboard')
            else:
                return redirect('employee_dashboard')
    return render(request, 'accounts/login.html')

6. Logout


from django.contrib.auth import logout
from django.shortcuts import redirect

def logout_view(request):
    logout(request)
    return redirect('login')

7. Attendance Model


class Attendance(models.Model):
    employee = models.ForeignKey(Employee, on_delete=models.CASCADE)
    date = models.DateField()
    status = models.CharField(
        max_length=10,
        choices=[('Present','Present'),('Absent','Absent')]
    )

8. Payroll Model


class Payroll(models.Model):
    employee = models.ForeignKey(Employee, on_delete=models.CASCADE)
    month = models.CharField(max_length=20)
    basic = models.DecimalField(max_digits=10, decimal_places=2)
    deductions = models.DecimalField(max_digits=10, decimal_places=2)
    net_salary = models.DecimalField(max_digits=10, decimal_places=2)

9. REST API Example (DRF)


from rest_framework import serializers

class EmployeeSerializer(serializers.ModelSerializer):
    class Meta:
        model = Employee
        fields = '__all__'

Enterprise HRMS – Django | Ready for Real Deployment 🚀

No comments:

Post a Comment

Django #7a Project Sample

Employee Management System – Django (HRMS) Employee Management System (Django + MySQL) Roles: Admin, HR, Employee 1....