FieldError Невозможно разрешить ключевое слово: Django blog likebutton dosent work

у меня проблемы я внедрил кнопку like она отображается на сайте блога когда вы нажимаете на кнопку read more, но когда вы нажимаете на like я получаю ошибку msg below:

enter image description here enter image description here

Я хочу, чтобы кнопка "нравится" работала, чтобы добавить лайк и также удалить лайк после, если вам это нравится. Я также хочу, чтобы она подсчитывала количество лайков.

Любая помощь в этом будет очень признательна!

папка newsapp views.py

from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.decorators import login_required
from django.views import generic
from .models import Post, Like
from .forms import CommentForm


class PostList(generic.ListView):
    queryset = Post.objects.filter(status=1).order_by('-created_on')
    template_name = 'index.html'
    paginate_by = 6

def post_view(request):
    qs = Post.objects.all()
    user = request.user

    context = {
        'qs': qs,
        'user': user,
    }

    return render(request, 'main.html', context)

@login_required
def like_post(request):
    user = request.user
    if request.method == 'POST':
        post_id = request.POST.get('post_id')
        post_obj = Post.objects.get(id=post_id)

        if user in post_obj.liked.all():
            post_obj.liked.remove(user)
        else:
            post_obj.liked.add(user)

        like, created = Like.objects.get_or_create(user=user, post_id=post_id)

        if not created:
            if like.value == 'Like':
                like.value = 'Unlike'
            else:
                like.value = 'Like'

        like.save()
    return redirect('newsapp:post-list')




def post_detail(request, slug):
    template_name = 'post_detail.html'
    post = get_object_or_404(Post, slug=slug)
    comments = post.comments.filter(active=True)
    new_comment = None
    # Comment posted
    if request.method == 'POST':
        comment_form = CommentForm(data=request.POST)
        if comment_form.is_valid():

            # Create Comment object but don't save to database yet
            new_comment = comment_form.save(commit=False)
            # Assign the current post to the comment
            new_comment.post = post
            # Save the comment to the database
            new_comment.save()
    else:
        comment_form = CommentForm()

    return render(request, template_name, {'post': post,
                                           'comments': comments,
                                           'new_comment': new_comment,
                                           'comment_form': comment_form}) 

папка newsapp urls.py

from django.urls import path
from . import views
from .views import post_view, like_post


app_name = 'newsapp'

urlpatterns = [
    path('', views.PostList.as_view(), name='home'),
    path('list/', post_view, name='post-list'),
    path('like/', like_post, name='like-post'),
    path("<slug:slug>/", views.post_detail, name="post_detail"),
]

папка newsapp models.py

from django.db import models
from django.contrib.auth.models import User
from cloudinary.models import CloudinaryField


STATUS = (
    (0,"Draft"),
    (1,"Publish")
)

class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')
    updated_on = models.DateTimeField(auto_now=True)
    content = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)
    liked = models.ManyToManyField(User, default=None, blank=True, related_name="liked")

    class Meta:
        ordering = ['-created_on']

    def __str__(self):
        return self.title

    @property
    def num_likes(self):
        return self.liked.all().count()

LIKE_CHOICES = (
    ('Like', 'Like'),
    ('Unlike', 'Unlike'),
)

class Like(models.Model):
    User = models.ForeignKey(User, on_delete=models.CASCADE)
    Post = models.ForeignKey(Post, on_delete=models.CASCADE)
    value = models.CharField(choices=LIKE_CHOICES, default='Like', max_length=10)

    def __str__(self):
        return str(self.post)


class Comment(models.Model):
    post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
    name = models.CharField(max_length=80)
    email = models.EmailField()
    body = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=False)

    class Meta:
        ordering = ['created_on']

    def __str__(self):
        return 'Comment {} by {}'.format(self.body, self.name)

папка newsapp forms.py

from django import forms
from .models import Comment


class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ("name", "email", "body")

папка newsapp admin.py

from django.contrib import admin
from django_summernote.admin import SummernoteModelAdmin
from .models import Post, Comment, Like


@admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):
    list_display = ('name', 'body', 'post', 'created_on', 'active')
    list_filter = ('active', 'created_on')
    search_fields = ('name', 'email', 'body')
    actions = ['approve_comments']

    def approve_comments(self, request, queryset):
        queryset.update(active=True)

class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'status','created_on')
    list_filter = ("status",)
    search_fields = ['title', 'content']
    prepopulated_fields = {'slug': ('title',)}

class PostAdmin(SummernoteModelAdmin):
    summernote_fields = ('content',)

admin.site.register(Post, PostAdmin)
admin.site.register(Like)

папка newsblog urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('newsapp.urls')),
    path('summernote/', include('django_summernote.urls')),
    path('newsapp/', include('newsapp.urls', namespace='newsapp')),
]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,
                          document_root=settings.MEDIA_ROOT)

папка newsblog settings.py

шаблоны папок base.html

шаблоны папок index.html

{% extends "base.html" %}
{% block content %}
<style>
    body {
        font-family: "Roboto", sans-serif;
        font-size: 18px;
        background-color: #fdfdfd;
    }

    .head_text {
        color: white;
    }

    .card {
        box-shadow: 0 16px 48px #E3E7EB;
    }
</style>

<header class="masthead">
    <div class="overlay"></div>
    <div class="container">
        <div class="row">
            <div class=" col-md-8 col-md-10 mx-auto">
                <div class="site-heading">
                    <h3 class=" site-heading my-4 mt-3 text-white"> NewsBlog and Automated news with API</h3>
                    <p class="text-light">We Love Django As much as you do..! &nbsp
                    </p>
                </div>
            </div>
        </div>
    </div>
</header>
<div class="container">
    <div class="row">
        <!-- Blog Entries Column -->
        <div class="col-md-8 mt-3 left">
            {% for post in post_list %}
            <div class="card mb-4">
                <div class="card-body">
                    <h2 class="card-title">{{ post.title }}</h2>
                    <p class="card-text text-muted h6">{{ post.author }} | {{ post.created_on}} </p>
                    <p class="card-text">{{post.content|slice:":200" }}</p>
                    <a href="{% url 'newsapp:post_detail' post.slug  %}" class="btn btn-primary">Read More &rarr;</a>
                </div>
            </div>
            {% endfor %}
        </div>
        {% block sidebar %} {% include 'sidebar.html' %} {% endblock sidebar %}
    </div>
</div>
{%endblock%}

шаблоны папок post_detail.html

{% extends 'base.html' %} {% block content %}
    {% load crispy_forms_tags %}

    <div class="container">
        <div class="row">
            <div class="col-md-8 card mb-4  mt-3 left  top">
                <div class="card-body">
                    <h1>{% block title %} {{ post.title }} {% endblock title %}</h1>
                    <p class=" text-muted">{{ post.author }} | {{ post.created_on }}</p>
                    <p class="card-text ">{{ post.content | safe }}</p>
                    <div class='ui segment'>
                        <form action="{% url 'newsapp:like-post'%}" method='POST' class="ui form">
                            {% csrf_token %}
                            <input type='hidden' name='post_id' value="{{ post.id }}">
                            {% if request.user not in post.liked.all %}
                                <button class="ui button positive" type='submit'>Like</button>
                            {% else %}
                                <button class="ui button negative" type='submit'>Unlike</button>
                            {% endif %}
                            <strong>{{ liked.all.count }} likes</strong>
                        </form>
                    </div>
                </div>
            </div>
            {% block sidebar %} {% include 'sidebar.html' %} {% endblock sidebar %}

шаблоны папок sidebar.html

{% block sidebar %}

<style>
        .card{
            box-shadow: 0 16px 48px #E3E7EB;
        }

</style>

<!-- Sidebar Widgets Column -->
<div class="col-md-4 float-right ">
<div class="card my-4">
        <h5 class="card-header">Info</h5>
    <div class="card-body">
        <p class="card-text">Blog yourself about the Latest news or find new via the Automated news Feature! </p>
    </div>
</div>
</div>

{% endblock sidebar %}
Вернуться на верх