在 html 模板中显示喜欢者的用户名



我添加了一个用户喜欢系统,用户可以在其中喜欢帖子。我已经成功添加了这个,但是似乎无法显示喜欢该帖子的人的用户名。这是我当前的实现。

models.py

class Post(models.Model):
    likes = models.ManyToManyField(User, related_name='likes')
    @property
    def total_likes(self):
        return self.likes.count()

views.py

def likepost(request, pk):
    if request.method == 'POST':
        user = request.user
        post = get_object_or_404(Post, pk=pk)
        if post.likes.filter(id=user.id).exists():
            post.is_liked = True
            post.likes.remove(user)
            post.save()
        else:
            post.is_liked = False
            post.likes.add(user)
            post.save()
        return redirect('home')

首页.html

 {% for post in posts.all %}
        <form id="like__post" method="POST" action="{% url 'likepost' post.id %}">
                {% csrf_token%}
                <input type="hidden">
              </form>
              <div style="position: absolute; bottom:80px; left: 85px;">
              {% if post.is_liked == True %}
                      <a href="javascript:{document.getElementById('like__post').submit()}"><img src="{% static 'heartred.png' %}" width="35px" height="35px"></a>
              {% else %}
                      <a href="javascript:{document.getElementById('like__post').submit()}"><img src="{% static 'heart.png' %}" width="33px" height="33px"></a>
              {% endif %}
{% endfor %}
 <ul> {{ post.likes }} </ul>

迄今。在我的模板中,我得到这个:身份验证。用户.无

likes是一个多对多字段,你需要迭代它。

<ul>
{% for like in post.likes.all %}
 <li>{{ like.username }}</li>
{% endfor %}
</ul>

最新更新