保存后Django表单初始值更改

时间:2018-06-28 12:52:39

标签: django python-3.x django-forms

enter image description here我使用从django的UserCreationForm继承的自定义表单来添加用户。我该如何为用户名字段设置不同的初始值。它工作正常,但在单击保存按钮后,用户使用的用户名不同于表格中显示的初始值。您可以在下面的代码中找到

from django.contrib.auth.forms import UserCreationForm


class AdminUserCreationForm(UserCreationForm):

    """
    AdminForm for creating an instance of custom USER_MODEL.
    """
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = ("username", "email")
        field_classes = {'username': UsernameField}

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.initial['username'] = random_username_generator()
        self.fields['username'].disabled = True
        self.fields['password1'].required = False
        self.fields['password2'].required = False

    def clean_username(self):
        username = self.cleaned_data['username'].lower()
        try:
            User.objects.get(username=username)
        except User.DoesNotExist:
            return username
        raise forms.ValidationError('A user with username {} already exists'.format(username))

    def clean_email(self):
        email = self.cleaned_data['email'].lower()
        try:
            User.objects.get(email=email)
        except User.DoesNotExist:
            return email
        raise forms.ValidationError('A user with email {} already exists'.format(email))

    def save(self, commit=True):
        import ipdb; ipdb.set_trace();
        user = super(AdminUserCreationForm, self).save(commit=False)
        # user = self.instance
        qb = QuickBlox()
        qb_password = reset_password_generator()
        user.qb_password = qb_password + 'vx'
        user.save()
        attempt = LoginAttempts()
        attempt.user = user
        attempt.save()
        send_invite_mail(user)
        return user

0 个答案:

没有答案
相关问题