@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()

Как это реализовать правильно и проще?
  • Вопрос задан
  • 216 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы