Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 表单字段未存储在Django用户模型中_Python_Django - Fatal编程技术网

Python 表单字段未存储在Django用户模型中

Python 表单字段未存储在Django用户模型中,python,django,Python,Django,我有一份我在下面定义的报名表 forms.py 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,

我有一份我在下面定义的报名表

forms.py

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')
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})
在views.py中,我处理注册过程

视图.py

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')
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\u name
没有存储在django用户模型中。即使在django管理员中,我也没有看到
display\u name
。我甚至执行了类似
serializers.serialize(“json”,user.objects.filter(username=username))的查询
但即使在这里,它也会显示除显示名称以外的所有其他字段


我做错了什么?

很简单,
django.contrib.auth.models.User
模型没有名为
display\u name
的字段,因此它当然不会被保存。如果您想向您的用户模型添加字段,您必须。

很简单,
django.contrib.auth.models.User
模型没有名为
display\u name
的字段,因此它当然不会被保存。如果要向用户模型中添加字段,则必须。

显示名称
不是
用户模型的列。那么它应该存储在哪里呢?如果您想构造一个额外的表等,您需要更改用户模型。
display\u name
不是
user
模型的一列。那么它应该存储在哪里呢?如果你想构造一个额外的表,你需要更改用户模型,等等。哦,我现在明白了。有什么方法可以向现有的Django用户模型添加一个新字段吗?@SouvikRay实际上是的,但这比提供你自己的模型要复杂得多(如我链接到的文档中所述)它会吓坏任何django程序员,而且它保证会以某种方式崩溃。你的选择哦,我现在明白了。有什么办法可以给现有的Django用户模型添加一个新字段吗?@SouvikRay实际上是的,但这比提供你自己的模型要复杂得多(正如我链接到的文档中所解释的那样),这会让任何Django程序员感到害怕,而且保证会以某种方式破坏它。你的选择