为什么电子邮件没有在用户注册时保存?

Why is the email not saving on user sign up?

我去测试用户注册,但它一直告诉我 UNIQUE constraint failed: users_customuser.email。那是因为电子邮件没有与表单的其余部分一起保存。我与检查员一起检查了数据库,它显示了一个空白的电子邮件字段。我在 form.save 之前放了一个调试打印,它显示了用户名电子邮件和密码,所以我知道电子邮件在表单数据中。该视图看起来不错,所以对我来说没有意义。尝试切换到 django 2.2 但没有帮助。 表格有效但电子邮件未保存。

views.py

def signup(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            raw_password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=raw_password)
            login(request, user)
            return redirect('home')
    else:
        form = SignUpForm()
    return render(request, 'user_accounts/signup.html', {'form': form})

forms.py

class SignUpForm(UserCreationForm):
    email = forms.EmailField(max_length=254, help_text='Enter a valid email address')
    class Meta:
        model = CustomUser
        fields = ('username', 'password1', 'password2')

signup.html

{% block content %}
  <h2>Sign up</h2>
  <form method="post">
    {% csrf_token %}
    {% for field in form %}
      <p>
        {{ field.label_tag }}<br>
        {{ field }}
        {% if field.help_text %}
          <small style="color: grey">{{ field.help_text }}</small>
        {% endif %}
        {% for error in field.errors %}
          <p style="color: red">{{ error }}</p>
        {% endfor %}
      </p>
    {% endfor %}
    <button type="submit">Sign up</button>
  </form>
{% endblock %}

我把forms.py改成了下面的

forms.py

class SignUpForm(UserCreationForm):
    # Deleted extra email field
    class Meta:
        model = CustomUser
        fields = ('email', 'username', 'password1', 'password2') # <-- Added 'email'