gpt4 book ai didi

python - 如何在 Django 用户模型中添加新字段

转载 作者:行者123 更新时间:2023-12-03 21:20:35 27 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

2年前关闭。




Improve this question




如何在 django 用户模型中添加新字段。 django 用户模型带有标准的用户名电子邮件和密码,但是我希望用户有更多与他们的帐户相关联的详细信息,比如电话号码之类的。什么是最好的方法来做到这一点?

最佳答案

有几种方法可以做到这一点。您可以在官方文档中阅读所有这些内容。 Here .

您可以通过创建 AbstractUser 或创建您自己的名为“Profile”的模型(例如)来扩展 User 模型,该模型以这种方式链接到 User 实例:

models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
phonenumber = models.CharField(verbose_name="phone number", max_lenght=10)
birthdate = models.DateField(verbose_name="birth date")

然后您创建该人将在注册期间填写的表格。它将是用户模型表单和您的自定义配置文件表单。
forms.py
class UserForm(UserCreationForm):
email = forms.EmailField()

class Meta:
model = User
fields = ['username', 'first_name', 'email', 'password1', 'password2']


class ProfileForm(forms.ModelForm):

class Meta:
model = Profile
fields = ['birthdate', 'phonenumber']
widgets = {
'birthdate': DateInput(attrs={'type': 'date'}),
}

那么你需要在他完成注册时将两个表单的数据保存到用户实例中。我正在使用这个方法:
views.py
def register(request):
if request.method == "POST":
u_form = UserForm(request.POST)
p_form = ProfileForm(request.POST)
if u_form.is_valid() and p_form.is_valid():
user = u_form.save()
p_form = p_form.save(commit=False)
p_form.user = user
p_form.save()
messages.success(request, f'Registration complete! You may log in!')
return redirect('login')
else:
u_form = UserForm(request.POST)
p_form = ProfileForm(request.POST)
return render(request, 'users/register.html', {'u_form': u_form, 'p_form': p_form})

因此,当人们进入注册页面时,他/她会看到 2 个表单,用户表单和个人资料表单,需要填写它们才能通过注册。当提交按钮被按下时(发布请求) View 检查所有数据是否正确并创建具有标准字段的用户配置文件和自定义配置文件实例,其中包含链接到该用户并可访问的所需附加字段(例如 User.profile.birthdate)。

希望有帮助。

关于python - 如何在 Django 用户模型中添加新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54490783/

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