Как добавить дополнительные поля и удалить или изменить текст в django UserCreationForm?

Я создаю веб-страницу на django для личного проекта с базовой системой входа/подписки. Моя проблема в том, что я хочу добавить дополнительные поля ввода, такие как имя и фамилия, а также изменить текст по умолчанию, в основном изменить его на другой язык.

Спасибо за помощь. :c Main SignUp page

Я пытался создать CustomField, но ничего не получилось

Для вашего пользовательского админа, если вы наследуете от стандартного UserAdmin из "django.contrib.auth.admin", перезапишите переменную класса "add_fieldsets" с вашими необходимыми полями, чтобы добавить новые поля.

Для удаления текста подсказки перезапишите "add_form" вашей пользовательской формой добавления. Чтобы создать новую форму добавления, наследуйте UserCreationForm из "django.contrib.auth.forms" и перепишите поля "password1" и "password2", чтобы убрать текст подсказки для пароля.

в вашем файле admin.py

@admin.register(CustomUser)
class CustomUserAdmin(UserAdmin):
    fieldsets = (
    (None, {"fields": ("username", "password")}),
    (_("Personal info"), {"fields": ("first_name", "last_name", "email")}),
    (
        _("Permissions"),
        {
            "fields": (
                "is_active",
                "is_staff",
                "is_superuser",
                "groups",
                "user_permissions",
            ),
        },
    ),
    (_("Important dates"), {"fields": ("last_login", "date_joined")}),
    )
    add_fieldsets = (
        ( None, {
                "classes": ("wide",),
                "fields": ("username", "password1", "password2", "first_name", "last_name", "email", "is_staff", "is_active"),
            },
        ),
    )
    list_display = ("pk", "username", "email", "full_name", "is_staff", "is_active")
    list_filter = ("is_active", "is_staff",)
    search_fields = ("username", "first_name", "last_name", "email")
    ordering = ("email",)
    filter_horizontal = (
        "groups",
        "user_permissions",
    )
    add_form = CustomUserCreationForm


class CustomUserCreationForm(UserCreationForm):
    password1 = forms.CharField(
    label=_("Password"),
    strip=False,
    widget=forms.PasswordInput(attrs={"autocomplete": "new-password"}),
    )
    password2 = forms.CharField(
        label=_("Password confirmation"),
        widget=forms.PasswordInput(attrs={"autocomplete": "new-password"}),
        strip=False,
    )

Django предоставил UserCreationForm api для создания нового пользователя с тремя обязательными полями (имя пользователя, пароль1, пароль2), но вы можете переопределить UserCreationForm следующим образом и добавить больше полей из стандартной модели пользователя Django.

form.py

from django.contrib.auth.forms import UserCreationForm

# User Signup
class UserCreateForm(UserCreationForm):
    password1 = forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control'}))
    password2 = forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control'}))
    class Meta:
        model = User
        fields = ['username','email','first_name','last_name','password1','password2']

        widgets = {
            'username':forms.TextInput(attrs={'class':'form-control'}),
            # 'first_name':forms.TextInput(attrs={'class':'form-control'}),
            # 'last_name':forms.TextInput(attrs={'class':'form-control'}),
            'email':forms.EmailInput(attrs={'class':'form-control'}),
        }

для удаления ненужного текста вы можете перебрать все поля формы следующим образом

HTML код

<form action="" method="POST">
     {% csrf_token %}
     {% for fm in form %}
          <label >{{fm.label}}</label>
          {{fm}}
     {% endfor %}
</form>
Вернуться на верх