Утверждение и отклонение запросов от пользователя, Django/Python

#python #django

Вопрос:

Я заранее попрошу прощения, потому что для этого конкретного вопроса я не выписал никакого кода. Это так, потому что я еще не понял, как я могу это сделать.

Я пытаюсь разработать веб-приложение(новое в программировании), в котором зарегистрированные пользователи могут делать запросы, а затем линейные менеджеры одобряют/отклоняют( больше похоже на запрос об отпуске). Это будет иметь несколько утверждающих. Я пробовал использовать Django-River, но, похоже, не очень хорошо понимаю документацию. Есть ли какой-нибудь другой способ, которым я могу это сделать? Я не запрашиваю код, все, что я запрашиваю, — это быть направленным в правильном направлении, и я обдумываю следующие шаги. Спасибо

Комментарии:

1. Не могли бы вы использовать типовую форму, созданную пользователем, а затем установить флажки «Другие учетные записи» в форме для утверждения?

Ответ №1:

Если бы у меня была такая же задача, я бы:

  1. Представьте по крайней мере два типа пользователей (см. Это руководство) , создав подклассы django.contrib.auth.models.AbstractUser для пользовательской модели пользователя с добавлением полей bool ( is_student и is_manager ) или user_type полей с целочисленными вариантами. Например, где-то в models.py :
     class User(AbstractUser):
        USER_TYPE_CHOICES = (
            (1, 'STUDENT'),
            (2, 'MANAGER'),
        )
        user_type = PositiveSmallIntegerField(choices=USER_TYPE_CHOICES, default=1)
        #...
        #or
        #...
        is_manager = BooleanField(default=False)
        is_student = BooleanField(default=True)
     
  2. Фильтруйте обратные вызовы API по типу пользователя, например, где-нибудь в views.py :
     from django.http import HttpResponse
    from django.views import View
    from django.http.response import Http404
    
    class SomeView(View):
        def get(self, request, *args, **kwargs):
            if not request.user.user_type==User.USER_TYPE_CHOICES[1][0]:
                raise Http404
            #coutinue your request processing
        #...
        #or
        #...
        def get(self, request, *args, **kwargs):
            if not request.user.is_manager:
                raise Http404
            #coutinue your request processing
     
  3. Наименьшие функции (модель запросов студентов на утверждение менеджерами и их первые страницы) хорошо описаны в любом базовом учебнике по django и могут быть реализованы в архитектуре starndad django model-view-form.