Задать вопрос
@blackbb

Как лучше реализовать хранение id пользователей в модели Django?

Здравствуйте. На сайте есть необходимость прикрутить рейтинг пользователей написавших статью. Рейтинг сделал, но нужно реализовать механизм проверки "Лайкнувших пользователей", т.е. каждый зарегинный юзер может ставить лайк только один раз. Я создал поле CharField у юзера и в нем сохраняю id пользователя, который лайкает. Рейтинг = лайки - дизлайки.
Модель пользователя
class Author(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    avatar = models.ImageField(upload_to='avatar', blank=True)
    like = models.IntegerField(default=0, verbose_name='Нравится')
    dislike = models.IntegerField(default=0, verbose_name='Не нравится')
    user_like_list = models.CharField(max_length=300, blank=True, verbose_name='id лайкнувших пользователей')

Функция лайка
def add_like(request, slug):
    article = Article.objects.get(slug=slug)
    try:
        article = get_object_or_404(Article, slug=slug)
        article.author.user_like_list = article.author.user_like_list + str(request.user.id) + ','
        user_list = []
        for item in article.author.user_like_list:
            user_list.append(item)
        if request.user.id in user_list:
            return redirect('article', slug=slug)
        else:
            article.author.like += 1
            article.author.save()

Как это реализовать правильно и проще?
  • Вопрос задан
  • 218 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • ProductStar
    Django + Python разработка
    2 месяца
    Далее
  • Skillbox
    Python-фреймворк Django
    3 месяца
    Далее
  • Бруноям
    Python-фреймворк Django
    3 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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