我正在尝试在django oscar的注册表单中添加用户名字段。请提供任何帮助,并告诉我如何在表单中添加此字段。
答案 0 :(得分:0)
添加用户名比您预期的要容易。您需要通过以下命令覆盖Django oscar的客户应用程序:
python manage.py oscar_fork_app customer project_name
之后,在位于project_name文件夹中的新客户模块中创建一个form.py文件。并将以下代码添加到文件中:
from oscar.apps.customer.forms import EmailUserCreationForm as CoreEmailUserCreationForm
from django import forms
from django.utils.translation import gettext_lazy as _
from oscar.core.compat import (existing_user_fields, get_user_model)
User = get_user_model()
class EmailUserCreationForm(CoreEmailUserCreationForm):
class Meta:
model = User
fields = ('email', 'first_name', 'last_name', 'username',)
def save(self, commit=True):
user = super().save(commit=False)
user.set_password(self.cleaned_data['password1'])
if 'username' in [f.name for f in User._meta.fields]:
user.username = self.cleaned_data['username']
if commit:
user.save()
return user
注意:请不要忘记将您的客户应用程序包含在settings.py中的 INSTALLED_APPS 中,例如“ project_name.customer.apps.CustomerConfig”