Создание простого пользовательского персонала - PullRequest
1 голос
/ 24 апреля 2019

У меня пользовательский тип 1 как пациент, 2 как Доктор. Теперь мне нужно создать тип пользователя 2 как is_staff=true и назначить его в группу врачей с ее разрешения.

class UserType(models.Model):
user =models.OneToOneField(User, on_delete=models.CASCADE)
USER_TYPE = (
    (1, 'Patient'),
    (2, 'Doctor'),
)
user_type = models.IntegerField(choices=USER_TYPE)

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Вы можете использовать signals для добавления пользователя в определенную группу всякий раз, когда UserType объект сохраняется, и если user_type равен 2:

from django.contrib.auth.models import Group
from django.db.models.signals import post_save
from .models import UserType

def add_user_to_doctors_group(sender, instance, **kwargs):
    if instance.user_type == 2:
        doctors = Group.objects.get(name='doctors')
        doctors.user_set.add(instance.user)
        instance.user.is_staff = True
        instance.user.save()
post_save.connect(add_user_to_doctors_group, sender=UserType)
0 голосов
/ 24 апреля 2019

Попробуйте это,

from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group

User = get_user_model()
new_user_instance = User.objects.create_user(username='your_username', email='foo@bar.com', password='secret_password', is_staff=True)
user_type_instance = UserType.objects.create(user=new_user_instance, user_type=2)

group = Group.objects.get(name='groupname')
new_user_instance.groups.add(group)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...