2015-02-18 2 views
0

им пытается сделать инициализацию формы, если моя модель объект purticular пользователя уже существует, но он дает сообщение об ошибке атрибутане атрибут error- объект «QuerySet» имеет никакого атрибута

моего views.py-

def edit_profile(request): 
    if request.method == 'POST': 
     post = request.POST 
     if 'save' in post: 
      form = user_profile_form(post) 
      if form.is_valid(): 
       f = form.save(commit = False) 
       f.username = request.session.get('username') 
       f.save() 
       return redirect('wall') 
      else: 
       return redirect('error') 
    else: 
     if 'username' in request.session: 
      u = user_profile.objects.filter(username = request.session.get('username', '')) 
      if u: 
       form = user_profile_form(initial = {'last_name': u.last_name}) 
       u.delete() 
      else: 
       form = user_profile_form() 
      return render(request, 'wall/edit_profile_page.html', {'form': form}) 
     else: 
      return redirect('error') 

и мой models.py-

class user_profile(models.Model): 
    username = models.CharField(max_length = 30, blank = True) 
    first_name = models.CharField(max_length = 30, blank = True) 
    last_name = models.CharField(max_length = 30, blank = True) 

и он дает ошибку -

'QuerySet' object has no attribute 'last_name' 

даже если и существует

заранее спасибо

ответ

0

QuerySet является "список" объектов. Вы должны получить первый экземпляр из QuerySet с использованием метода first():

u = user_profile.objects.filter(username=request.session.get('username', '')) \ 
         .first() 
+0

я просто попытался, что использование user_profile.get() и worked..which лучше. .and что делает .get() do ?? – aquaman

+0

В дополнение к ответу, вы не должны искать пустую строку, когда 'username' не найден. В вашей таблице может быть пользователь с пустым именем пользователя. Просто используйте 'request.session.get ('username')' – ozgur

+0

Если запись не найдена, 'get()' выдает исключение 'ObjectDoesNotExist'. 'first()' в этом случае просто возвращает 'None'. – catavaran

1

Вы можете попробовать это

try: 
    u = user_profile.objects.get(username =request.session.get('username', None)) 
    form = user_profile_form(initial = {'last_name': u.last_name}) 
    u.delete() 
except ObjectDoesNotExist: 
    form = user_profile_form() 

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

  • Нет связанных вопросов^_^