2015-02-23 13 views
0

Команда, я попытался создать форму для новых сообщений со следующими полями. Название, тело, категория. Мне нужно, чтобы имя автора (здесь называлось «Владелец») автоматически сохранялось с именем пользователя, используемым во время входа в систему, но хотя я был в состоянии сделать это с датой и временем, я не был с пользователем, не могли бы вы помочь? Пожалуйста, поставьте более подробно, как вы можетеОбъект SimpleLazyObject 'не является вызываемым

Вид:

def create_post(request): 
    if request.method == 'POST': 
     form = CreatePostForm(request.POST) 

     if form.is_valid(): 
      post = form.save(commit=False) 
      post.datposted = datetime.datetime.now() 
      post.owner = request.user() 
      post.save() 
      return HttpResponseRedirect('/posts/') 
     else: 
      return HttpResponse("Favor. Verifique os campos necessarios") 

    else: 
     form = CreatePostForm() 
     f = {'form' : form} 
     return render(request,'create_post.html',f) 

Модели:

class Post(models.Model): 
    title = models.CharField(max_length=100) 
    body = models.TextField() 
    datposted = models.DateTimeField('date posted') 
    category = models.ForeignKey('Category') 
    owner = models.ForeignKey('UserProfile') 

    def __str__(self): 
     return '%s' % self.title 

class Category(models.Model): 
    title = models.CharField(max_length=100) 
    def __str__(self): 
     return self.title 

class UserProfile(models.Model): 

    user = models.OneToOneField(User) 


    website = models.URLField(blank=True) 
    picture = models.ImageField(upload_to='profile_images', null=True) 


    def __unicode__(self): 
     return self.user.username 

class Logout(User): 
    force_logout_date = models.DateTimeField(null=True, blank=True) 
+0

Вся ошибка: объект '' SimpleLazyObject не отозваны Запрос Метод: \t POST URL запроса: \t http://127.0.0.1:8000/newpost/ Джанго Версия: 1.7.4 \t Исключение Тип: \t TypeError Exception Значение: \t объект '' SimpleLazyObject не отозваны Exception Расположение: \t C: \ Users \ Documents \ Treinamentos \ Python \ проекты \ projeto_blog \ blogapp \ views.py я п create_post, строка 176 Python Исполняемые: \t C: \ python27 \ python.exe Python Версия: 2.7.9 \t Python Путь: \t [ 'C: \\ Пользователи \\ Documents \\ \\ Treinamentos Python \ \ projects \\ projeto_blog ', –

ответ

1

Вы не должны вызывать объект пользователя.

post.owner = request.user 
+0

Как я должен ссылаться на пользователя, чтобы сохранить эту информацию в базе данных? –

+0

Примечание в ответе Даниэля пользовательский объект не имеет пары круглых скобок в качестве отсканированного фрагмента кода. – Dirtycoder

+0

Извините, не заметил этого. Я сделал так, как предложил Даниэль и получил это: Запрос Метод: \t POST URL запроса: \t http://127.0.0.1:8000/newpost/ Джанго Версия: 1.7.4 \t Исключение Тип: \t ValueError Исключительное значение: \t Невозможно назначить «>»: «Post.owner» должен быть экземпляром «UserProfile». Исключение Место: \t C: \ Python27 \ lib \ site-packages \ django \ db \ models \ fields \ related.py в __set__, строка 597 –