TypeError at /like/45 Поле 'id' ожидало число, но получило <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x000001BF06424F10>>.
Я пытаюсь добавить кнопку like к записи в блоге на django, но я вижу эту ошибку каждый раз, когда я пытаюсь нажать на кнопку like, но если я открываю страницу администратора, а затем возвращаюсь на сайт, он работает нормально, но я не знаю причину этого. помогите пожалуйста ?
просматривает код
python def LikeView(request,pk): post = get_object_or_404(Post, id=request.POST.get('post_id')) post.likes.add(request.user)
- models code
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
likes= models.ManyToManyField(User,related_name='blog_post')
def total_likes(self):
return self.likes.count()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail',kwargs={'pk':self.pk})
- urls
urlpatterns = [
path('', PostListView.as_view(), name='blog-home'),
path('user/<str:username>', UserPostListView.as_view(), name='user-posts'),
path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
path('post/new/', PostCreateView.as_view(), name='post-create'),
path('post/<int:pk>/update/', PostUpdateView.as_view(), name='post-update'),
path('post/<int:pk>/delete/', PostDeleteView.as_view(), name='post-delete'),
path('about/', views.About, name='blog-about'),
path('like/<int:pk>',LikeView,name='like_post'),
]
- the buttom in the template
```<form action="{% url 'like_post' post.pk %}" , method="POST">
{% csrf_token %}
<button
type="submit"
,
name="post_id"
,
value="{{ post.id }}"
,
class="btn btn-primary btn-ms"
>
Like
</button>
Я думаю, что ошибка в этой строке
post.likes.add(request.user)