如何在django中自动创建用户

问题描述 投票:0回答:1

我正在尝试创建一份申请表,以便想要为我们工作的人可以向我们的组织提出申请。我与客户进行了交谈,他不希望新员工创建自己的用户登录信息。相反,他希望我创建一个管理页面,他将在其中接受或拒绝申请人。如果他接受申请人,它将自动创建用户登录信息,并通过电子邮件向申请人发送其登录信息。用户输入帐户后当然可以更改其登录信息。这怎么办?

我尝试创建注册表,但最终在管理员接受申请人之前创建了一个用户。

User = get_user_model()
class InterpreterCreationForm(UserCreationForm):
    address = forms.CharField(widget=forms.Textarea)
    phone_number = forms.CharField(max_length=15)
    ssn = forms.CharField(max_length=15, required=False)
    languages = forms.ModelMultipleChoiceField(queryset=Language.objects.all(), widget=forms.CheckboxSelectMultiple)

    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2')

    def save(self, commit=True):
        user = super().save(commit=False)
        user.is_interpreter = True
        if commit:
            user.save()
            interpreter = Interpreter(
                user=user,
                address=self.cleaned_data['address'],
                phone_number=self.cleaned_data['phone_number'],
            )
            interpreter.save()
            interpreter.languages.set(self.cleaned_data['languages'])
        return user
django authentication django-models django-forms django-admin
1个回答
0
投票

您正在处理用户模型,因此如果您保存,则会创建一个用户。我认为对此没什么可做的。

我会创建自己的模型来模仿用户模型。该模型有两个功能:Delete 和 ConvertToUser。

您需要两个创建一个单独的视图来连接功能。

© www.soinside.com 2019 - 2024. All rights reserved.