2014-10-16 3 views
0

У меня есть модель Django Model Form, и я пытаюсь установить поле имени пользователя равным полю электронной почты.Django Forms - установить поле имени пользователя, равное полю электронной почты

Вот моя форма

class UserForm(forms.ModelForm): 
    email = forms.EmailField() 
    username = forms.CharField(widget=forms.HiddenInput()) 

    class Meta: 
     model = User 
     fields = ('email', 'username') 

настоящее время я использую некоторые JavaScript, чтобы скопировать новое значение электронной почты на имя пользователя скрытый вход, прежде чем пользователь отправляет форму, но я хотел бы сделать это на стороне сервера.

Я попытался установить его, выполнив следующие UserForm['username'] = email перед сохранением формы и получив следующую ошибку: object does not support item assignment.

Любые советы будут оценены.

+0

Вы можете использовать предоставленный ответ или попробовать приложение, которое обрабатывает это для вас. Вы можете проверить https://github.com/pennersr/django-allauth 2 строки в своих settings.py, и у вас есть то, что вы ищете. – cdvv7788

ответ

3

Я не тестировал это, я думаю, что это сработает. Если не проверить переопределение метода сохранения, который определенно работает. Django Model Field Default Based Off Another Field in Same Model

class UserForm(forms.ModelForm): 
    email = forms.EmailField() 
    username = forms.CharField(default=email) 

    class Meta: 
     model = User 
     fields = ('email', 'username') 
Смежные вопросы