Python Django: "Post.author" должен быть экземпляром "User" ошибка

Я пытаюсь присвоить имя пользователя полю author в модели Post, Django выдает следующую ошибку:

"Post.author" должен быть экземпляром "User".

модель:

class Post(models.Model):
title = models.CharField(max_length=200)
image = models.ImageField(upload_to='',null=True,blank=True)
image_url = models.CharField(max_length=200,default=None,null=True,blank=True)
date = models.DateTimeField(default=timezone.now)
content = models.TextField()
author = models.ForeignKey(User, null=False, blank=False,on_delete=models.CASCADE)
categories = models.ManyToManyField(Category)
published = models.BooleanField()

def __str__(self):
    return self.title

view:

@login_required
def new_post(request):
   # Add a new post
   if request.method != 'POST':
      # No data submitted, create a blank form
      form = PostForm()
   else:
       # Post data submitted, process data
      form = PostForm(data=request.POST)
      if form.is_valid():
         new_post = form.save(commit=False)
         new_post.author = request.user.username
         new_post.save()
         return redirect('elogs:posts')
   #Display a blank or invalid form
   context = {'form':form}
   return render(request,'elogs/new_post.html',context)

Форма:

class PostForm(forms.ModelForm):
class Meta:
    model = Post
    fields = ['title','content','image','image_url','published']
    widgets = {
        'title': forms.Textarea(attrs={'placeholder': 'Title..'}),
        'content': forms.Textarea(attrs={'placeholder': 'What is on your mind?'}),
        'categories': forms.TextInput()
        
    }enter code here

Вы указываете имя пользователя, а не самого пользователя:

  • new_post.author = request.user.username

А ForeignKey принимает экземпляр данного Model, User в данном случае.

Вернуться на верх