我在模板中实现大于运算符时遇到问题。我在首页上有一个用户可以喜欢的帖子,并且在喜欢该帖子的count旁边显示了我朋友的个人资料图像。现在,如果有10个朋友喜欢我的帖子,我只希望显示五个朋友的个人资料图像,并且在显示图像的末尾会显示“ +”。 “ +”表示还有更多朋友喜欢我的帖子。我试过了,但是不起作用:
型号:
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,blank=True,null=True)
profile_pic = models.ImageField(upload_to='ProfilePicture/', default="ProfilePicture/user-img.png", blank=True)
friends = models.ManyToManyField('Profile', related_name="my_friends",blank=True)
class Post(models.Model):
poster_profile = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, blank=True,null=True)
likes = models.ManyToManyField('Profile', related_name='image_likes', blank=True)
查看:
def home(request):
#all post in homepage
posts = Post.objects.filter(poster_profile=request.user)
#Show friend who liked Post
friends_like_img = request.user.profile.friends.all().order_by('-id')
context = {'posts':posts,'friends_img':friends_img}
return render(request, 'template.html', context)
模板:
{% for post in posts %}
{% for img in friends_img %}
{% if img in post.likes.all > 20 %}
<img src="{{ img.profile_pic.url }}" height="25" width="25" alt="profile_pic">
{% else %}
<img src="{{ img.profile_pic.url }}" height="25" width="25" alt="profile_pic"> +
{% endif %}
{% endfor %}
{% endfor %}
您的代码有点混乱,但是这里有一些指针:
您只想要五张图像,所以请在slicing the queryset中查看该图像:
friends_like_img = request.user.profile.friends.all().order_by('-id')[:5]
您的模板语法已全部使用,您可以阅读文档并习惯一些示例。在上下文中,您使用的是friends_img
,而不是friends_like_img
-上下文是模板所关心的。现在,由于我们只有五个图像,因此可以在模板中执行此操作:
{% for img in friends_img %}
<img src="{{ img.profile_pic.url }}" ...>
{% endfor %}
{% if post.likes.count > 5 %}
+
{% endif %}