gpt4 book ai didi

python - Django 手动保存用户配置文件

转载 作者:行者123 更新时间:2023-11-30 22:32:59 24 4
gpt4 key购买 nike

我创建了一个配置文件并使用OneToOneField附加到用户模型。我有一个注册表单,用户可以在其中输入与用户和个人资料相对应的输入。 Django提供了User.objects.create_user来保存与User模型相关的字段,但我不知道如何保存Profile的详细信息手动建模。
这是我的代码:

models.py

from django.db import models
from django.contrib.auth.models import User

def Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
full_name = models.CharField(max_length=150, required=True)
# lot more fields here

views.py

@csrf_protect
def register(request):
if request.method == 'POST':
full_name = request.POST.get('full_name', '')
username = request.POST.get('username', '')
password = request.POST.get('password', '')
User.objects.create_user(username=username, password=password)
# how to save Profile full_name here

return render(request, 'register.html')

注册.html

<form method="post" action="/register/">{% csrf_token %}
<div class="form-group">
<label for="full_name">Name</label>
<input type="text" name="full_name" id="full_name">
</div>
<div class="form-group">
<label for="username">Username</label>
<input type="text" name="username" value="" id="username">
</div>
<div class="form">
<label for="password">Password</label>
<input type="pass" name="password" value="" id="password">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>

1) 如何在 views.py 中保存 Profile 模型的 full_name ?我可以在不为将来想要保存的每个模型或信号创建表单类的情况下执行此操作吗?
2) 我是否需要更改 settings.py 中的 auth_user_model 才能手动保存个人资料详细信息?
3) 如何在不创建新 Form 类的情况下验证字段?

最佳答案

@csrf_protect
def register(request):
if request.method == 'POST':
full_name = request.POST.get('full_name', '')
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = User.objects.create_user(username=username, password=password)
Profile.objects.create(user=user,full_name=full_name)
# how to save Profile full_name here

return render(request, 'register.html')

您可以使用创建的用户实例来创建与该用户关联的配置文件

关于python - Django 手动保存用户配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45297960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com