2015-11-30 2 views
0

У меня возникли проблемы с обновлением профиля пользователя в качестве клиента.Django update profile

Проблема:

  • Нет ошибки, показывающих
  • только по электронной почте, адрес и рождения обновляет
  • Хотят обновить имя и фамилию в пользователе

если есть короткий путь к этому виду профиля обновления, пожалуйста, дайте мне знать или, пожалуйста, попробуйте помочь с этим кодом. Спасибо.

models.py

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


class SignupUser(models.Model): 
    user = models.OneToOneField(User) 
    address = models.CharField(blank=False, max_length=200) 
    birthday = models.DateTimeField('Birthday') 

    def __str__(self): 
     return self.address 


User.profile = property(lambda u: SignupUser.objects.get_or_create(user=u)[0]) 

forms.py

from django import forms 
from django.contrib.auth.models import User 
from signup.models import SignupUser 

class UpdateProfile(forms.ModelForm): 
    class Meta: 
     model = SignupUser 
     fields = ['address', 'birthday'] 


class UpdateUser(forms.ModelForm): 
    class Meta: 
     model = User 
     fields = ['username', 'first_name', 'last_name', 'email'] 


    def clean_email(self): 
     email = self.cleaned_data['email'] 
     if User.objects.filter(email=email).exists(): 
      raise forms.ValidationError('This is not your email') 

     return email 

views.py

def editprofile(request): 
    if request.method == 'POST': 
     profileup = UpdateProfile(request.POST or None, instance=request.user.profile) 
     if profileup.is_valid(): 
      profileup.save() 
      userup = UpdateUser(request.POST or None, instance=request.user) 
      if userup.is_valid(): 
       user = userup.save(commit=False) 
       user.first_name == request.POST['first_name'] 
       user.save() 
      return HttpResponseRedirect('/authority/editprofile/') 
    else: 
     user = request.user 
     profile = user.profile 
     userup = UpdateUser(instance=user) 
     profileup = UpdateProfile(instance=profile) 

    args = { 
     'userup': userup, 
     'profileup': profileup, 
    } 
    return render(request, 'auth/editprofile.html', args) 

ответ

0

Попробуйте добавить еще пункт после того, как если userup.is_valid(), чтобы получить больше информации для Ошибка. Но я предлагаю вам использовать представление на основе класса UpdateView

+0

Я с другим, которого я могу обновить, но если я сделаю что-то неточно, форма не покажет никаких ошибок. –

Смежные вопросы