gpt4 book ai didi

python - 在 Django 中创建和更新用户配置文件

转载 作者:行者123 更新时间:2023-12-01 06:05:36 25 4
gpt4 key购买 nike

Django 新手在文档中跌跌撞撞。我正在尝试使用 Django 的“UserProfiles”创建用户配置文件,但在找出基于 Django 文档设置代码的正确方法时遇到了一些麻烦。

这是我的代码,基于文档。 (create_user_profile 100% 来自文档)。

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


class UserProfile(models.Model):
user = models.OneToOneField(User)

location = models.CharField(max_length = 100)
website = models.CharField(max_length=50)
description = models.CharField(max_length=255)
fullName = models.CharField(max_length=50)
email = models.EmailField(max_length = 100, blank = False)
created = models.DateTimeField(auto_now_add=True)
private = models.BooleanField()


def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)

post_save.connect(create_user_profile, sender=User)

设置和保存这些字段的正确方法是什么?

例如,如果我在一种表单(例如注册表单)中同时拥有 User 和 UserProfile 模型,我将如何首先创建、更新所有这些模型,然后最后保存?

最佳答案

how would I first create, then update all of this, before finally saving

这些不是单独的步骤。当您在 Django 中创建或更新记录时,您会将其保存到数据库中。

对于注册表单,我建议您将其设置为 User 记录上的 ModelForm,然后指定要保存到个人资料中的其他字段,并将它们单独保存在保存函数中,就像这样......

class RegistrationForm(forms.ModelForm):
location = forms.CharField(max_length=100)
# etc -- enter all the forms from UserProfile here

class Meta:
model = User
fields = ['first_name', 'last_name', 'email', and other fields in User ]

def save(self, *args, **kwargs):
user = super(RegistrationForm, self).save(*args, **kwargs)
profile = UserProfile()
profile.user = user
profile.location = self.cleaned_data['location']
# and so on with the remaining fields
profile.save()
return profile

关于python - 在 Django 中创建和更新用户配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8120678/

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