Python 在django queryset中获取之前的3项

Python 在django queryset中获取之前的3项,python,django,Python,Django,我知道也有类似的问题,但它们不能回答我的问题。 假设我有一系列字母: 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]

我知道也有类似的问题,但它们不能回答我的问题。 假设我有一系列字母:

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封。如何才能得到正确的结果?

试试以下方法:

    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之前切片的情况,因为它们前面没有三个字母