Как использовать оператор больше в шаблоне django - PullRequest
1 голос
/ 09 мая 2020

У меня возникла проблема при реализации оператора "больше" в моем шаблоне. У меня есть сообщение на главной странице, которое может понравиться пользователям, и у меня отображаются изображения профилей моих друзей рядом с количеством, которым нравится сообщение. Теперь, если мой пост понравился 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 %}

1 Ответ

1 голос
/ 09 мая 2020

Ваш код немного беспорядочный, но вот несколько указателей:

Вам всегда нужно только пять изображений, поэтому позаботьтесь об этом в представлении, нарезав набор запросов :

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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...