Форма отображения для пользовательского пользователя - PullRequest
0 голосов
/ 04 июля 2019

Я создаю пользовательского пользователя в Django, следуя этому руководству: https://wsvincent.com/django-custom-user-model-tutorial/

Мне удается создать его и добавить новые поля, такие как: телефон, местоположение, имя и т. Д.

Однако, когда я нажимаю signup, эти новые поля не появляются.

enter image description here

Я знаю, знаю, как:

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 %}

1 Ответ

1 голос
/ 05 июля 2019

Новые поля не отображаются в форме регистрации, поскольку вы не добавили их в атрибут поля CustomUserCreationForm.

class CustomUserCreationForm(UserCreationForm):
    class Meta(UserCreationForm):
        model = CustomUser
        fields = ('username', 'email')

Должно быть:

class CustomUserCreationForm(UserCreationForm):
    class Meta(UserCreationForm):
        model = CustomUser
        fields = ('username', 'email', 'first_name', 'last_name','organization', 'location', 'postcode', 'phone')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...