Как я могу подсчитать общее количество лайков?
Я добавил кнопку "Мне нравится" в свой блог. Она отлично работает, но я не могу подсчитать общее количество поставленных лайков. Что мне теперь делать? Как я могу подсчитать общее количество лайков?
models.py:
class FAQ(models.Model):
likes = models.ManyToManyField(User,default=None, related_name="faqLIKES")
views.py:
def index(request):
allFAQ = FAQ.objects.all()
context = {"allFAQ":allFAQ}
return render(request,'0_index.html',context)
def likeView(request, pk):
post = get_object_or_404(FAQ, id=request.POST.get('faqLIKEid'))
post.likes.add(request.user)
return redirect("/")
Используйте count.
>>> post.likes.count() # returns a count of all likes
Кроме того, в качестве побочного замечания - зачем вам параметр url, если вы получаете id поста внутри данных POST? Почему бы не использовать только параметр url? Вам не пришлось бы отправлять данные формы со стороны клиента.
Вы можете .annotate(…)
[Django-doc] с:
from django.db.models import Count
FAQ.objects.annotate(number_of_likes=Count('likes'))
Объекты FAQ
, возникающие из этого QuerySet
, будут иметь дополнительный атрибут .number_of_likes
. Таким образом, в шаблоне можно перечислить FAQ
объектов, и отобразить {{ faq.number_of_likes }}
с faq
объект FAQ
.