我添加了一个用户喜欢的系统,用户可以在其中喜欢帖子。我已经成功添加了此内容,但是似乎无法显示喜欢该帖子的人的用户名。这是我当前的实现。
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')
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>
到目前为止。在我的模板中,我得到以下信息: auth.User.None
答案 0 :(得分:0)
likes
是一个多对多字段,您需要对其进行迭代。
<ul>
{% for like in post.likes.all %}
<li>{{ like.username }}</li>
{% endfor %}
</ul>