Как в Django ListView через orm обратится к конкретному экземпляру модели?

Рейтинг: 0Ответов: 0Опубликовано: 03.02.2023

мне нужно реализовать проверку, есть ли у конкретного поста и текущего юзера записи в таблице Vote, если есть записи, то нужно узнать какое значение в столбце vote таблицы Vote (0 не нравится, 1 нравится). Я при помощи этого в шаблоне устанавливаю на палец вверх или палец вниз активный стиль css.

Я это реализовал в DetailView, но столкнулся с проблемой в ListView, так как не могу получить id поста.

Мой код:

Модель:

class Vote(models.Model):
    post = models.ForeignKey(Post,
                             related_name='postid',
                             on_delete=models.CASCADE,
                             default=None,
                             blank=True)
    user = models.ForeignKey(CustomUser,
                             related_name='userid',
                             on_delete=models.CASCADE,
                             default=None, blank=True)
    vote = models.BooleanField(default=True)

Метод, который я пытаюсь использовать в ListView context:

def get_vote(self):
    votes = Vote.objects.filter(user=self.request.user.id, post=post)
    if len(votes) == 0:
        return 'not_vote'
    if len(votes) == 1:
        if votes[0].vote == 0:
            return 'down'
        if votes[0].vote == 1:
            return "up"
        else:
            raise TypeError('Ошибка в Vote')
    context['vote'] = get_vote(self)

Я новичок в Django, буду рад помощи.

Ответы

Ответов пока нет.