首页 > 解决方案 > 在 django 查询集中获取 3 个以前的项目

问题描述

我知道有类似的问题,但他们没有回答我的问题。假设我有一系列字母:

A B C D E F G

我只想根据特定字母将 3 个字母传递给我的模板,并且这 3 个字母必须是以前的字母。例如,如果这个字母是 D,那么它必须是:

A B C

如果是E,那么它是:

B C D

等等。

我了解切片的工作方式,但我能做的就是获取查询集的前 3 个字母:

context['words'] = WordsAndLetters.objects.exclude(letter=letter).order_by('letter')[:3]

我也排除了我的具体信件,只显示前 3 封信。我怎样才能得到正确的结果?

标签: pythondjango

解决方案


尝试这个:

    specific_letter = WordsAndLetters.objects.get(letter=your_specific_letter) # your specific letter;
    all_letters = list(WordsAndLetters.objects.all().order_by('letter'))  # all letters in a sorted list;
    index = all_letters.index(specific_letter)  # find out the index of your specific letter;
    context['words'] = all_letters[index-4:index-1] # slice three letters before your specific letter index, e.g. if your index is 6 the slice would be [2:5];

当然,这并不能说明切片到 A、B 或 C 的情况,因为它们前面没有三个字母。


推荐阅读