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 ответов

13 просмотров

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта