ограничение доступа пользователя к публикации более одного раза - PullRequest
1 голос
/ 03 июня 2019

У меня есть код, который позволяет пользователю понравиться сообщение, но я понял, что пользователю может понравиться сообщение более одного раза, чего я не хочу.Как я могу ограничить это?

мой код

@login_required
def like_post(request, pk):
    if pk:
        liked_post = Post.objects.get(id=pk)
        count = liked_post.likes
        count += 1
        liked_post.likes = count
        liked_post.save()


    return redirect('/community/post/%s' %liked_post.id)

что я пробовал

добавив что-то вроде этого .... но не уверен

if post.likes.filter(id=user.id).exists():
        post.likes.remove(user)
    else:
        post.likes.add(user)

1 Ответ

1 голос
/ 03 июня 2019

Вы можете использовать мета-класс unique_together. Это вызовет ошибку проверки, которую вы можете пропустить, если не хотите сообщать об ошибке.

В вашей модели лайков (если она есть) укажите что-то вроде следующего:

class Meta():
    unique_together = ('id', 'user')

Или добавьте атрибут 'liked_by' для Post как many to many field для пользователей, которые должны управлять вещами uniqueness для вас. Отношения могут существовать только один раз. Вы можете использовать Post.liked_by.count(), чтобы получить количество лайков, но у меня не возникнет проблем с отображением количества лайков в качестве собственного атрибута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...