Мне нужно добавить поля first_name
и last_name
, связанные с
модель пользователя
и отображать ее в профиле , форма
.
поля:
>>> 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 = [ 'Имя', 'фамилия', 'личное электронное письмо', 'адрес', 'телефонный номер', ] def save (self, * args, ** kwargs): super (UserProfileForm, self) .save (* args, ** kwargs) self.instance.user.first_name = self.cleaned_data.get ('первое_имя') self.instance.user.last_name = self.cleaned_data.get ('последнее_имя') self.instance.user.save () класс Meta: model = UserProfile
# urls.py
url (r '^ profiles / edit /', edit_profile, {'form_class': UserProfileForm}, name = 'profiles_edit_profile'),
and add in #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)