Мне нужно, чтобы общее количество лайков отображалось на моем 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')
]
пожалуйста, помогите мне решить эту проблему, это срочно