Внедрение многопользовательских типов для системы управления больницей

Итак, я создаю систему управления больницей в качестве моего домашнего проекта на Django, и одна вещь, которую я понял, это то, что вам нужно реализовать мультисистему из 3 пользователей, которая включает в себя HR, персонал (врач) и пациента. Я перерыл весь интернет в поисках лучшей реализации и ничего не нашел. Лучшее, что я видел, это этот учебный блог Как реализовать многопользовательскую систему, но он не охватывает использование более 3 пользователей, как я хочу. Вот мой текущий user/models.py

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


    USER_CHOICE = [
        ('D', 'Doctor'),
        ('P', 'Patient'),
        ('R', 'Receptionist'),
        ('HR', 'HR')
    ]
    # Create your models here.
    class User(AbstractUser):
        """
        user class for different users in the database
        """
        user_type = models.CharField(choices=USER_CHOICE, max_length=3, default=None)

    def is_doctor(self):
        """ return True if the user is a doctor and False if not """
        if self.user_type == 'D':
            return True
        return False

    def is_patient(self):
        """ return True if the user is a patient and False if not """
        if self.user_type == 'P':
            return True
        return False

    def is_receptionist(self):
        """ return True if the user is a receptionist and False if not """
        if self.user_type == 'R':
            return True
        return False

    def is_hr(self):
        """ return True if the user is HR and False if not """
        if self.user_type == 'HR':
            return True
        return False

    class Meta:
        """ Descending order for id """
        # ordering = ('id',)

Мне нужна помощь в выборе лучшего способа реализации этого

Можно попробовать использовать flags в User model.

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    is_hr = models.BooleanField()
    is_doctor = models.BooleanField()
    is_patient = models.BooleanField()
Вернуться на верх