170 похожих чатов

Кто знает как реализовать систему лайков? Нужны просто лайки к

статье, чтобы если он уже лайкнул то при повторном нажатии на лайк - лайк снимается
Попробовал такой способ, но чет не получилось

models.py

class Article(models.Model):
user = models.ForeignKey(User, blank=True, null=True)
title = models.CharField(max_length=128, blank=True, null=True)
post = models.TextField()
views = models.IntegerField(default=0)
likes = models.IntegerField(default=0)
moderated = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

class Like(models.Model):
user = models.ForeignKey(User)
article = models.ForeignKey(Article)
likes_in_article = models.IntegerField(default=0)
liked = models.BooleanField(default=False)


views.py

def add_like(request, article_id):
article = get_object_or_404(Article, pk=article_id)
like = Like.objects.get_or_create(article=article, user=request.user)[0]
likes_in_article = article.likes
like.likes_in_article = likes_in_article
if like.liked:
like.likes_in_article -= 1
like.liked = False
else:
like.likes_in_article += 1
like.liked = True
like.save()
article.save()
return redirect("article", article_id=article_id)

2 ответов

4 просмотра

Зачем хранить количество в поле статьи?

чёт ты намудрил во вью.. всё просто: 1) человек ставит лайк - создаешь запись в Likes 2) человек ставит дизлайк - создаешь запись в Likes 3) человек отменяет лайк/дизлайк - деактивируешь / удаляешь запись в Likes Дополнительно можно изменять Article.likes, если объект был создан / удалён, для лайков +1, для дизлайков -1, удалили -1.

Похожие вопросы

Обсуждают сегодня

Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Всем привет. Подскажите, пожалуйста, как вы реализовываете следующий функционал. Допустим есть форма, в которой имеется выпадающий список со значениями. Значения хранятся в БД...
Евгений
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Хех, данные на форме всегда будут "из прошлого", т.к. перезаполнять поля формы в процессе редактирования пользователем - так себе идея. Пользователь может открыть форму редакт...
Alexander Somov
7
Карта сайта