【发布时间】:2020-08-04 05:55:35
【问题描述】:
我有以下ListView:
class SongList(generic.ListView):
model = models.Song
template_name = 'videos/song_list.html'
context_object_name = 'song_list'
我在哪里覆盖get_context_data:
def get_context_data(self, **kwargs):
context = super(generic.ListView, self).get_context_data(**kwargs)
现在我想对每首歌曲执行一些操作,以便将其显示在我的模板上,所以我这样做了:
for song in context['song_list']:
song = models.Song.objects.get(title=song)
lyrics_list = models.Song.objects.get(title=song).lyrics_as_list()
import pymorphy2
morph = pymorphy2.MorphAnalyzer()
lyrics_list_lemma = []
for word in set(lyrics_list):
parsed_word = morph.parse(word)[0]
result = {
'word_original': word,
'word_normalized': parsed_word.normal_form,
}
lyrics_list_lemma.append(result)
context['lyrics_lemma'] = lyrics_list_lemma
context['count'] = len([k for d in lyrics_list_lemma for k in d.keys() if k == 'word_normalized'])
return context
我得到了 lyrics_list_lemma 和 count 的正确值,但仅限于一首歌。我不应该为所有歌曲都获得它,因为它属于for 循环吗?
【问题讨论】:
-
您是否尝试过调试和检查 context['song_list'] 的值?它可能被某些东西覆盖了。
-
是的,我知道
context[song_list]给出了正确的值,因为它适用于我在同一视图中的其他功能
标签: python python-3.x django for-loop django-views