#python #django
Вопрос:
Я заранее попрошу прощения, потому что для этого конкретного вопроса я не выписал никакого кода. Это так, потому что я еще не понял, как я могу это сделать.
Я пытаюсь разработать веб-приложение(новое в программировании), в котором зарегистрированные пользователи могут делать запросы, а затем линейные менеджеры одобряют/отклоняют( больше похоже на запрос об отпуске). Это будет иметь несколько утверждающих. Я пробовал использовать Django-River, но, похоже, не очень хорошо понимаю документацию. Есть ли какой-нибудь другой способ, которым я могу это сделать? Я не запрашиваю код, все, что я запрашиваю, — это быть направленным в правильном направлении, и я обдумываю следующие шаги. Спасибо
Комментарии:
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)
- Фильтруйте обратные вызовы 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
- Наименьшие функции (модель запросов студентов на утверждение менеджерами и их первые страницы) хорошо описаны в любом базовом учебнике по django и могут быть реализованы в архитектуре starndad django model-view-form.