我正在创建一个社交媒体网站,用户可以在该网站上互相喜欢。我已经成功完成了大部分工作。
我已允许用户喜欢和不喜欢帖子,并在我的模板中显示了喜欢该帖子的用户列表。
我遇到的一个问题是根据用户是否喜欢该帖子来更改图像。
我当前的实现不正确,我不确定如何解决。目前,我在Post模型上具有一个变量(is_liked),并且图像是否更改取决于该图像是否正确。
我的问题是,如果一个用户喜欢一个帖子,那么它就会显示为每个用户都喜欢。
我想要它,这样每个人都无法看到喜欢该帖子时显示的图形,只有他们自己喜欢它时。
models.py:
class Post(models.Model):
file = models.FileField(upload_to='files/')
summary = models.TextField(max_length=600)
pub_date = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
likes = models.ManyToManyField(User, related_name='likes')
is_liked = models.BooleanField(default=False)
views.py:
def likepost(request, post_id):
if request.method == 'POST':
tuser = request.user
post = get_object_or_404(Post, pk=post_id)
if post.likes.filter(id=tuser.id).exists():
post.likes.remove(tuser)
post.is_liked = False
post.save()
else:
post.likes.add(tuser)
post.is_liked = True
post.save()
return redirect('home')
home.html(模板)
{% if post.is_liked == True %}
<a href="javascript:{document.getElementById('like__post{{ post.id }}').submit()}"><div class="" style="position: absolute; bottom: 115px; left: 34px;"> <img src="{% static 'redheart.png' %}" width="22px" height="22px"> </div></a>
{% else %}
<a href="javascript:{document.getElementById('like__post{{ post.id }}').submit()}"><div class="" style="position: absolute; bottom: 115px; left: 34px;"> <img src="{% static 'heart.png' %}" width="22px" height="22px"> </div></a>
{% endif %}