python - 在 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 封信。我怎样才能得到正确的结果?
解决方案
尝试这个:
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 的情况,因为它们前面没有三个字母。
推荐阅读
- ruby - 作为 Catalina 升级的一部分,“重新定位的项目”文件夹中的 RVM
- python - 将列表添加到具有未定义键的 for 循环中的字典键
- odoo - 如何在 Odoo 12 中拆解产品?
- php - PHP cUrl 和 cookie GX_SESSION_ID
- cmake - 无法在 Clion 中使用嵌入式 gdb 服务器进行调试
- php - 使用 cURL 保存图像
- python - 加载 Python 库“/tmp/_MEItueAuk/libpython3.7m.so.1.0”时出错:dlopen:/lib/x86_64-linux-gnu/libc.so.6:找不到版本“GLIBC_2.28”
- flutter - 如何在 Flutter 中从 ip camera 下载图像
- mongodb - 在 Mongoose 和 GraphQL 中解决关系
- html - 当有多个表和特殊性时,在 R 中抓取 html 表及其 href 链接