Имя всех пользователей, которым понравился пост в django - PullRequest
1 голос
/ 11 января 2020

Я не могу показать все имена пользователей, которым понравилась запись в django. Я пробовал много способов сделать это, но это не работает. мои models.py:

class post(models.Model):
     title = models.CharField(max_length=100)
     image = models.ImageField(upload_to='post_pics', null=True, blank=True)
     video = models.FileField(upload_to='post_videos', null=True, blank=True)
     content = models.TextField()
     likes = models.ManyToManyField(User, related_name='likes', blank=True)
     date_posted = models.DateTimeField(default=timezone.now)
     author = models.ForeignKey(User, on_delete=models.CASCADE)

     def __str__(self):
         return self.title


     def delete(self, *args, **kwargs):
         self.image.delete()
         super().delete(*args, **kwargs)

     def get_absolute_url(self):
             return reverse ('blog-home')

в views.py:

def like_post(request):
# posts = get_object_or_404(Post, id=request.POST.get('post_id'))
    posts = get_object_or_404(post, id=request.POST.get('post_id'))
    is_liked = False
    if posts.likes.filter(id=request.user.id).exists():
        posts.likes.remove(request.user)
        is_liked = False
    else:
        posts.likes.add(request.user)
        is_liked = True

    return render(request, 'blog/home.html')

def post_likes(request, pk):
    posts = get_object_or_404(post, pk=pk)
    post_likes = posts.likes.all()
    context = {'post_likes': post_likes,}

    return render(request, 'blog/post_likes.html', context)

в urls.py:

path('post/<int:pk>/postlikes/', views.post_likes, name='post-likes'),

и в post_like. html:

{% extends "blog/base.html" %}
{% block content %}
{% for likes in posts %}
<p>{{ posts.likes.user.all }}</p>
{% endfor %}
{% endblock content %}

Как я могу увидеть имена пользователей, которым понравился конкретный пост?

1 Ответ

1 голос
/ 11 января 2020

Вы перебираете post_likes, которые являются User объектами, а затем визуализируете user.username:

{% extends "blog/base.html" %}
{% block content %}
{% for <b>user</b> in <b>post_likes</b> %}
    <p>{{ <b>user.username</b> }}</p>
{% endfor %}
{% endblock content %}

Примечание : обычно это лучше использовать settings.AUTH_USER_MODEL [Django -doc] для ссылки на модель пользователя, чем использовать User модель [Django -doc] напрямую. Для получения дополнительной информации вы можете увидеть , ссылающийся на User модель раздела документации .

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