gpt4 book ai didi

python - 在 django-profile 中添加字段 first_name 和 last_name

转载 作者:太空狗 更新时间:2023-10-30 01:24:07 24 4
gpt4 key购买 nike

我需要添加与关联的first_namelast_name 字段 User 模型并将其显示在配置文件 form 中。

字段:

   >>> user = User.objects.get(pk=1)
>>> user.first_name
u'Some'
>>> user.last_name
u'User'

我的模型是这样的:

class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
personal_email = models.EmailField(blank=True)
address = models.CharField(max_length=140)
phone_number = models.CharField(max_length=20)

def __unicode__(self):
return u'Profile of user: %s' % self.user.username

呈现个人资料表单时,必须显示字段。

first_name:  
last_name:
personal_email:
address:
phone_number:

编辑

我决定:

#forms.py

class UserProfileForm(forms.ModelForm):
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)

def __init__(self, *args, **kwargs):
super(UserProfileForm, self).__init__(*args, **kwargs)
self.fields['first_name'].initial = self.instance.user.first_name
self.fields['last_name'].initial = self.instance.user.last_name

self.fields.keyOrder = [
'first_name',
'last_name',
'personal_email',
'address',
'phone_number',
]


def save(self, *args, **kwargs):
super(UserProfileForm, self).save(*args, **kwargs)
self.instance.user.first_name = self.cleaned_data.get('first_name')
self.instance.user.last_name = self.cleaned_data.get('last_name')
self.instance.user.save()

class Meta:
model = UserProfile

#urls.py

     url(r'^profiles/edit/', edit_profile, {'form_class': UserProfileForm},
name='profiles_edit_profile' ),

并加入#signals.py

    @receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
userprofile, new = UserProfile.objects.get_or_create(user=instance)

最佳答案

假设您使用的是 ModelForm,您可以执行以下操作:

class profileForm(ModelForm):
first_name = forms.CharField(max_length=30, required=False)
last_name = forms.CharField(max_length=30, required=False)
class Meta:
model = UserProfile

def save(self, commit=True):
m = super(customerForm, self).save(commit=False)
# Update and save user model here
if commit:
m.save()
return m

您可以跳过覆盖保存方法并在您的 View 中进行保存。只需获取名字和姓氏值并在验证表单后保存即可。您可能还想使用事务来确保一切都保存或什么都不保存。

关于python - 在 django-profile 中添加字段 first_name 和 last_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6085452/

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