2016-03-04 4 views
2

... Но это !? Я использую Django 1.9 и Python 3.Невозможно назначить '1': Comment.user должен быть экземпляром пользователя

Я стараюсь, чтобы люди прокомментировать пост, моя модель выглядит следующим образом:

class Comment(models.Model): 
    user = models.ForeignKey(User, unique=False) 
    post = models.ForeignKey(Post, unique=False) 
    content = models.TextField(max_length=450) 
    created = models.DateField(auto_now=False,auto_now_add=True) 
    edited = models.BooleanField(default=False) 
    replies = models.ManyToManyField('Comment', blank=True) 
    score = models.BigIntegerField(default=0) 

    def __str__(self): 
     return self.content 

Я не использую форму, а не я пытаясь создать объект в представлении:

def PostView(request, user, slug): 
    instance = get_object_or_404(Post, user__username=user, slug=slug) 
    context = { 
     'object': instance, 
     'MEDIA_URL': MEDIA_URL, 
     'STATIC_URL': STATIC_URL 
    } 

    if request.method == 'POST': 

     data_type = request.POST.get('type') 

     if data_type == 'comment': 
      content = request.POST.get('content') 
      author = get_user(request) 
      author_id = author.id 
      post = instance 
      comment = Comment(user=author_id, post=post, content=content) 

Однако это должно работать нормально, но я получаю это действительно странные ошибки при попытке опубликовать комментарий:

Невозможно назначить «1»: «Comment.user» должен быть экземпляром «Пользователь».

Ошибка возникает, когда я пытаюсь создать объект. Full traceback can be seen here

+1

'author_id' не' User' –

ответ

2

Вы должны назначить User полю Comment.user. В настоящее время вы назначаете идентификатор. Вы можете сделать:

comment = Comment(user=author, post=post, content=content) 

или

comment = Comment(user_id=author_id, post=post, content=content) 
+0

Ого, это действительно странно. Это первое, что я пробовал, и тогда я получил ошибку, но при повторном пробуждении это, похоже, волшебно работает. Django должен быть четвёртым, как USB. –

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