Python 显示喜欢django上帖子的用户
嗯,我的项目有一个功能就是给帖子发喜欢的帖子,当这项功能完成后,喜欢帖子的用户会被推荐到一个与喜欢次数相邻的apear,问题是用户由于某种原因不会出现。我认为错误在模型中,我认为它应该有一个定义来显示用户或类似的东西 views.pyPython 显示喜欢django上帖子的用户,python,html,django,django-models,django-views,Python,Html,Django,Django Models,Django Views,嗯,我的项目有一个功能就是给帖子发喜欢的帖子,当这项功能完成后,喜欢帖子的用户会被推荐到一个与喜欢次数相邻的apear,问题是用户由于某种原因不会出现。我认为错误在模型中,我认为它应该有一个定义来显示用户或类似的东西 views.py def like_post(request): user = request.user if request.method == 'POST': post_id = request.POST.get('p
def like_post(request):
user = request.user
if request.method == 'POST':
post_id = request.POST.get('post_id')
post_obj = Post.objects.get(id=post_id)
if user in post_obj.liked.all():
post_obj.liked.remove(user)
else:
post_obj.liked.add(user)
like, created = Like.objects.get_or_create(author=user, post_id=post_id)
if not created:
if like.value == 'Like':
like.value == 'Unlike'
else:
like.value = 'Like'
like.save()
return redirect('imagelist')
def imagelist(request):
images = Post.objects.all()
context2 = {
"images": images,
}
return render(request, 'imagelist.html', context2)
Models.py
class Like(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
value = models.CharField(choices=LIKE_CHOICES, default='Like', max_length=10)
def __str__(self):
return str(self.post)
class Post(models.Model):
text = models.CharField(max_length=200)
posti = models.ImageField(upload_to='media/images', null=True, blank="True")
video = models.FileField(upload_to='media/images', null=True, blank="True")
user = models.ForeignKey(User, related_name='imageuser', on_delete=models.CASCADE, default='username')
liked = models.ManyToManyField(User, default=None, blank=True, related_name='liked')
updated = models.DateTimeField(auto_now=True)
created =models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.tittle)
@property
def num_likes(self):
return self.liked.all().count()
imagelist.html
<strong>{{ image.liked.user }}</strong>
{{image.liked.user}
您必须为此使用循环:
{% for user in image.liked.all %}
{{ user.username }}
{% endfor %}
非常感谢。你的代码有效,你能解释一下为什么有效吗?当然,当你直接使用
image.liked.user
时,它不返回任何数据,也不显示任何数据。因为,您的字段返回了一个queryset。此查询集由用户对象组成。因此没有user
字段。必须使用循环访问对象,然后才能访问用户的字段。