Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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,我正试图为我的“Person”模型添加额外的属性,即“age”、“city”和“state”。我已经为此苦苦挣扎了几天,并查阅了关于如何在Django中“扩展用户类”的文档。但是,我被卡住了,当我尝试创建一个新帐户时,我得到了以下错误: TypeError at /polls/signup/add 'age' is an invalid keyword argument for this function 人物模型: class Person(models.Model): user =

我正试图为我的“Person”模型添加额外的属性,即“age”、“city”和“state”。我已经为此苦苦挣扎了几天,并查阅了关于如何在Django中“扩展用户类”的文档。但是,我被卡住了,当我尝试创建一个新帐户时,我得到了以下错误:

TypeError at /polls/signup/add
'age' is an invalid keyword argument for this function
人物模型:

class Person(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=200, null=True)
    last_name = models.CharField(max_length=200, null=True)
    email = models.CharField(max_length=200, null=True)
    city = models.CharField(max_length=200, null=True)
    state = models.CharField(max_length=200, null=True)
    age = models.CharField(max_length=50, null=True)
创建帐户视图(我很确定这就是问题发生的地方):


关于如何解决此问题并允许用户添加通用用户模型中未包含的奖金字段,您有什么想法吗?

您应该使用个人模型而不是用户模型

if request.method == 'POST':
    new_user = User(username = request.POST["username"],
                    email=request.POST["email"],
                    first_name=request.POST["first_name"],
                    last_name=request.POST["last_name"],
                    )
    new_user.set_password(request.POST["password"])
    new_user.save()
    Person.objects.create(user=new_user,
                      age=str(request.POST.get("age")),
                      city=str(request.POST.get("city")),
                      state=str(request.POST.get("state")))
    new_user.is_active = True
    new_user.save()
    return redirect('../')
else:
    return render(request, 'polls/create_account.html')

您应该使用人物模型而不是用户模型

if request.method == 'POST':
    new_user = User(username = request.POST["username"],
                    email=request.POST["email"],
                    first_name=request.POST["first_name"],
                    last_name=request.POST["last_name"],
                    )
    new_user.set_password(request.POST["password"])
    new_user.save()
    Person.objects.create(user=new_user,
                      age=str(request.POST.get("age")),
                      city=str(request.POST.get("city")),
                      state=str(request.POST.get("state")))
    new_user.is_active = True
    new_user.save()
    return redirect('../')
else:
    return render(request, 'polls/create_account.html')

我仍然有这个问题,所以我提出了另一个问题。我想你实际上也评论了这篇老文章,哈哈。我不知道为什么这让你感到困惑。这些字段只存在于Person上,而不存在于User上;你应该只发送用户对用户和人对人的字段。我理解这个概念。我完全清楚这一点。这只是语法和如何写它让我困惑。可能的重复我仍然有这个问题,所以我提出了另一个问题。我想你实际上也评论了这篇老文章,哈哈。我不知道为什么这让你感到困惑。这些字段只存在于Person上,而不存在于User上;你应该只发送用户对用户和人对人的字段。我理解这个概念。我完全清楚这一点。让我困惑的只是语法和实际编写方法。这修复了错误消息。现在,唯一的问题是信息没有显示出来。但是,我处理过一个类似的问题。谢谢修复了错误消息。现在,唯一的问题是信息没有显示出来。但是,我处理过一个类似的问题。谢谢