2012-09-30 25 views
0

我有一個Django的模型,看起來像這樣檢索以前和下一個對象:創建一個Django查詢,將基於字母順序

class Definition 
    name = models.CharField(max_length=254) 
    text = models.TextField() 

如果我做了以下查詢:

animal = Definition.objects.get(name='Owl') 

,如果我有這些名字在我的數據庫定義如下:

Elephant, Owl, Zebra, Human 

是有辦法做一個django查詢,它會根據模型中的name字段的字母順序顯示基於animal對象的前一個和下一個定義?

我知道有基於datetime字段取得前/後的方法,但我不太確定這種情況。

回答

3

我不知道有任何方式在少於三個查詢中這樣做。

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] 
+0

+1不錯!不知道你可以在字符串上使用lt和gt。非常便利 :)。 – Jingo

相關問題