При смене профиля пользователя с помощью UpdateView полномочия пользователя с несколькими типами беспорядочные - Django - PullRequest
0 голосов
/ 25 июня 2018

У меня есть три типа пользователей в пользовательской модели (создание, запрос и общий), multiple type полномочия пользователя запутаны, когда я меняю профиль пользователя с помощью UpdateView, например, пользователь, который является admin, когда admin щелкнул по пользователю, который является обычным пользователем, тогда этот пользователь на странице имеет полномочия common user, мой UpdateView выглядит следующим образом:

class UserUpdateView(UpdateView):
    model = User
    form_class = UserForm
    context_object_name = 'user'
    template_name = 'general/teachers/user_change_form.html'
    def get_object(self):
        return get_object_or_404(User, pk=self.kwargs['pk'])

модели пользователя:

class User(AbstractUser):
    name = models.CharField(max_length=100, verbose_name="姓名", default="", blank=True)
    gender = models.CharField(
        max_length=7,choices=(("male","男"),("female","女")),
        default="female", verbose_name="性别",
    )
    department = models.ForeignKey(
        Department,
        on_delete=models.CASCADE, null=True, blank=True, verbose_name="所属部门",
    )
    job_title = models.CharField(max_length=100, verbose_name="职位", default="", blank=True)
    mobile = models.CharField(max_length=11, verbose_name="手机号", default="", blank=True)
    email = models.EmailField(max_length=50, verbose_name="邮箱", default="", blank=True)
    is_employee = models.BooleanField(default=True, verbose_name='是否是普通用户')
    is_teacher = models.BooleanField(default=False, verbose_name='是否是查询用户')
    is_supervisor = models.BooleanField(default=False, verbose_name='是否是评测人')
    add_time = models.DateTimeField(auto_now=True, verbose_name="添加时间")

формы пользователя:

class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('username', 'department', 'gender', 'job_title', 'email', 'mobile')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...