簡體   English   中英

表單字段未存儲在Django用戶模型中

[英]Form field not getting stored in Django User model

我有一個下面定義的注冊表格

表格

from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from django import forms

class SignUpForm(UserCreationForm):
    display_name = forms.CharField(max_length=30, required=True, help_text='Please provide a display name for your profile')
    class Meta:
        model = User
        fields = ('username', 'password1', 'password2', 'display_name')

在views.py中,我處理了注冊過程

views.py

from django.contrib.auth.models import User
from django.contrib.auth import login, authenticate
from .forms import SignUpForm
from django.shortcuts import render, redirect


@csrf_exempt
def signup_users(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            username = form.cleaned_data.get('username')
            display_name = form.cleaned_data.get('display_name')
            raw_password = form.cleaned_data.get('password1')

            user.set_password(raw_password)
            user.display_name = display_name
            user.save()
            user = authenticate(username=username, password=raw_password)
            print("signup authencticate", user)
            login(request, user)
            return render(request, 'index.html')
    else:
        form = SignUpForm()
    return render(request, 'signup.html', {'form': form})

用戶能夠成功注冊,但是他們的display_name不會存儲在django User模型中。即使在django管理員中,我也沒有看到display_name字段。我什至執行過諸如serializers.serialize("json",User.objects.filter(username=username))但即使在這里,它也會顯示除display_name之外的所有其他字段。

我究竟做錯了什么?

好吧,很簡單django.contrib.auth.models.User模型沒有名為display_name字段,因此當然不會保存它。 如果要向用戶模型添加字段,則必須提供自定義用戶模型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM