django - 如何通过名字字段的第一个字母按字母顺序对对象进行排序

时间:2013-05-27 18:41:43

标签: python django

我的模型包含字段worddefinition。字典模型。

在db中,我有例如这些对象:

word          definition
-------------------------
Banana        Fruit
Apple         also Fruit
Coffee        drink

我想做一个查询,它给出了我,按照第一个字母排序,这个:

Apple - also Fruit
Banana - Fruit    
Coffee -drink

这是我的模特:

class Wiki(models.Model):
   word = models.TextField() 
   definition = models.TextField()

我想在视图中创建它,而不是在模板中。这怎么可能在django?

2 个答案:

答案 0 :(得分:24)

鉴于模型......

class Wiki(models.Model):
   word = models.TextField() 
   definition = models.TextField()

......代码......

my_words = Wiki.objects.order_by('word')

...应该按照正确的顺序返回记录。

但是,如果类型为word,您将无法在TextField字段上创建索引,因此如果有word排序需要很长时间你桌子上有很多行。

我建议将其改为......

class Wiki(models.Model):
   word = models.CharField(max_length=255, unique=True) 
   definition = models.TextField()

...这不仅会在word列上创建索引,还会确保您无法定义相同的字词两次。

答案 1 :(得分:6)

由于您标记了Django的问题,我将回答如何使用Django实体进行操作。

首先,将您的实体定义为:

class FruitWords(models.Model):
    word = models.StringField()
    definition = models.StringField()

    def __str__(self):
        return "%s - %s" % (self.word, self.definition)

获取列表:

for fruit in FruitWords.all_objects.order_by("word"):
    print str(fruit)