我们如何使用Django oscar在注册表单中添加用户名字段

时间:2019-08-17 10:18:56

标签: django-oscar

我正在尝试在django oscar的注册表单中添加用户名字段。请提供任何帮助,并告诉我如何在表单中添加此字段。

1 个答案:

答案 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”

enter image description here