创建将根据字母顺序检索上一个和下一个对象的 Django 查询

ajt*_*ajt 0 python django model alphabetical

我有一个看起来像这样的 Django 模型:

class Definition
    name = models.CharField(max_length=254)
    text = models.TextField()
Run Code Online (Sandbox Code Playgroud)

如果我执行以下查询:

animal = Definition.objects.get(name='Owl')
Run Code Online (Sandbox Code Playgroud)

如果我的数据库中有这些名称的以下定义:

Elephant, Owl, Zebra, Human
Run Code Online (Sandbox Code Playgroud)

有没有办法做一个django查询,它会animal根据name模型中字段的字母顺序显示基于对象的上一个和下一个定义?

我知道有多种方法可以根据datetime字段获取上一个/下一个,但我对这种情况不太确定。

Dan*_*man 5

在不到三个查询中,我不知道有什么方法可以做到这一点。

target = 'Owl'
animal = Definition.objects.get(name=target)
previous_animal = Definition.objects.order_by('name').filter(name__lt=target)[0]
next_animal = Definition.objects.order_by('name').filter(name__gt=target)[0]
Run Code Online (Sandbox Code Playgroud)