Мне нужно, чтобы общее количество лайков отображалось на моем html через контекст

html файл: это код на моем html и контекстное имя likes получает лайки всех пользователей и отображает их

<div class="col-lg-4 col-md-6 col-sm-6">
    <div class="services-item">
        <img src="{{participant.participants_image.url}}" alt="" width="420" height="280">
        <h3></h3>
        <p>posted by {{ participant.user.username }}</p>
        <p>CONTEST : {{ participant.contest_id }}</p>
        <p>{{ participant.image_desc }}</p>
        <form method="post" action="{% url 'participants:like' participant.id %}">
            {% csrf_token %}
<!--                                <input type="text"  value="{{participant.id}}"/>-->
            <button type="submit" class="small btn primary-btn px-2 py-1" name="part_id"
                    value="{{participant.id}}">vote</button>
        </form>
        <br/>
        <a href="" class="small btn btn-primary rounded-3 btn-lg px-3">Buy for Rs.400</a>
        <p>votes:{{ participant.likes }}</p>
<!--                            <div class="right-btn"><a href="" class="primary-btn">vote</a></div>-->
    </div>
</div>

models.py:

from django.db import models
from contests.models import Contest
from django.conf import settings
# Create your models here.
class Participant(models.Model):
    contest_id = models.ForeignKey(Contest, null=False, blank=False, on_delete=models.CASCADE )
    user = models.ForeignKey(settings.AUTH_USER_MODEL, max_length=1000,blank=False,null=False,on_delete=models.CASCADE)
    active = models.BooleanField(default=False)
    contact_no = models.BigIntegerField(null=False, blank=False)
    image_desc = models.TextField(max_length=500, null=False, blank=False)
    participants_image = models.ImageField(upload_to='participants_image/', blank=False, null=False)
    likes = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='parti_posts')
    def __str__(self):
        return self.user.username

    def total_likes(self):
        return  self.likes.count()

views.py: Я не могу получить общий подсчет участников просмотра, если я помещаю контекстные данные в likeview, то подсчет ведется по id и дипломам, которые ставят лайки всем постам

def participants(request):
    parti_obj = Participant.objects.all()
    print(parti_obj)
    # like_obj = get_object_or_404(Participant, id=request.user)
    # like_obj = Participant.objects.filter(id=)
    # like_ct = like_obj.total_likes()

    context = {'participants': parti_obj,
               # 'likes':like_ct
               }
    # return HttpResponse(parti_obj)
    return render(request, 'participants/participants_page.html', context)

#
def likeview(request,pk):
    # import pdb;pdb.set_trace()
    parti_obj = Participant.objects.all()
    parti = get_object_or_404(Participant, id=request.POST.get('part_id'))
    print(parti)
    parti.likes.add(request.user)

    like_obj = get_object_or_404(Participant, id=pk)
    like_ct = like_obj.total_likes()
    context = {
        'participants': parti_obj,
        'likes':like_ct
    }
    return render(request, 'participants/participants_page.html', context)

urls.py

from django.urls import path
from . import views
# from .views import ParticipantPageView

app_name = "participants"
urlpatterns = [
    path("participant/<int:pk>", views.participant, name='participant'),
    # path("participants/<int:pk>", views.participant_reg, name='participant_reg'),
    # path('participants_page', ParticipantPageView.as_view(), name='participants'),
    path('participants_page',views.participants, name='participants'),
    path('like/<int:pk>/like',views.likeview, name='like')
]

пожалуйста, помогите мне решить эту проблему, это срочно

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