Django не может получить доступ, не может получить доступ к словару, переданному в контексте, используя переменную, созданную в шаблоне - PullRequest
0 голосов
/ 25 мая 2018

Я изучаю Django, делая сайт новостной ленты для практики.На моей странице новостной ленты я хочу отобразить количество лайков в сообщении на кнопке лайка.См. Два блока кода ниже -

  1. views.py - Здесь я поместил все свои сообщения в all_posts, а затем просмотрел их, чтобы получить общее количество лайков в этом сообщении отa Таблица Likes в модели (если есть лучший способ, пожалуйста, предложите) в словарь лайков.
all_posts = NewsFeed.objects.all().order_by('time').reverse()
likes = {}
for post in all_posts:
    likes_count = Likes.objects.filter(newsfeed = post).count()
    likes[post.id] = likes_count

form = StatusForm()
context = {
    'name': name,
    'all_posts': all_posts,
    'statusForm': form,
    'likes': likes,
}
index.html - Здесь я хочу отобразить все сообщения и кнопку «Мне нравится» для каждого сообщения, которая также отображает количество лайков в сообщении.Когда я вручную пытаюсь получить доступ к количеству лайков {{likes.4}}, он отображает правильный счет для четвертого статуса Like (1), но когда я пытаюсь получить доступ к нему как {{likes.post_id}}, он ничего не отображает Like ().Пожалуйста, помогите мне, поскольку я новичок в этом, а также предоставьте предложения, чтобы сделать то же самое лучше, если таковые имеются.
<code>{% for post in all_posts %}
<div class="newsfeed-div">
    <h3>{{ post.title }}</h3>
    <p>{{ post.content }}</p>
    <pre>{{ post.user.name }}
{{ post.time }}
{% с post_id = post.id%} {% endwith%} {% endfor%}

Когда я использую что-то вроде:

{{ likes.4}}
Я получаю правильное количество лайков для 4-го новостного канала, но почему
{{ likes.post_id }}
не работает?

Пожалуйста, помогитеменя, а также предоставить ваши предложения для достижения того же лучшего.

1 Ответ

0 голосов
/ 25 мая 2018

Шаблоны Django не поддерживают индексацию по ключу переменной.См. Невозможно получить доступ к значениям словаря в шаблоне (объект pk является ключом dict) для аналогичного вопроса.

При этом, ваша проблема может быть легко решена с помощью

{{ post.likes_set.count }}

Суффикс _set является соглашением для имени по умолчанию RelatedManager, которое возвращает все дочерние записи в отношении «один ко многим» (все likes, принадлежащиеданный post для этого примера) и .count возвращает количество строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...