Я создаю пользовательского пользователя в Django, следуя этому руководству:
https://wsvincent.com/django-custom-user-model-tutorial/
Мне удается создать его и добавить новые поля, такие как: телефон, местоположение, имя и т. Д.
Однако, когда я нажимаю signup
, эти новые поля не появляются.
Я знаю, знаю, как:
1) Сделайте так, чтобы добавленные поля появились
2) Измените html / css с помощью начальной загрузки этой конкретной страницы регистрации html, потому что я не могу ее найти
Я пытался добавить эти поля в admin.py
в list_display = ['email', 'username']
, но у меня не работает
В admin.py
У меня есть:
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationForm, CustomUserChangeForm
from .models import CustomUser
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = ['email', 'username'] # HERE I TRIED TO ADD THE FIELDS SUCH AS 'location' BUT IT DOES NOT WORK
admin.site.register(CustomUser, CustomUserAdmin)
В forms.py
У меня есть:
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm):
model = CustomUser
fields = ('username', 'email')
class CustomUserChangeForm(UserChangeForm):
class Meta(UserChangeForm):
model = CustomUser
fields = ('username', 'email', 'first_name', 'last_name', 'organization', 'location',
'postcode', 'phone')
По моему models.py
у меня есть:
`from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
first_name = models.CharField(max_length=100, default='SOME STRING')
last_name = models.CharField(max_length=100, default='SOME STRING')
organization = models.CharField(max_length=100, default='SOME STRING')
location = models.CharField(max_length=100, default='SOME STRING')
postcode = models.CharField(max_length=100, default='SOME STRING')
phone = models.CharField(max_length=100, default='SOME STRING')
def __str__(self):
return self.email
`
В views.py
У меня есть:
from django.urls import reverse_lazy
from django.views.generic.edit import CreateView
from .forms import CustomUserCreationForm
class SignUpView(CreateView):
form_class = CustomUserCreationForm
success_url = reverse_lazy('login')
template_name = 'signup.html'
В signup.html
У меня есть:
{% extends 'base.html' %}
{% block title %}Sign Up{% endblock %}
{% block content %}
<h2>Sign up</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Sign up</button>
</form>
{% endblock %}