Python django-如何按名称字段的第一个字母按字母顺序对对象排序

Python django-如何按名称字段的第一个字母按字母顺序对对象排序,python,django,Python,Django,我有一个模型,其中包含word和definition字段。字典的模型 在db中,我有以下对象: word definition ------------------------- Banana Fruit Apple also Fruit Coffee drink 我想提出一个查询,按照单词的第一个字母排序,它给出: Apple - also Fruit Banana - Fruit Coffee -drink 这是我的模

我有一个模型,其中包含
word
definition
字段。字典的模型

在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这怎么可能

既然您将问题标记为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)
根据模型

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

my_words = Wiki.objects.order_by('word')
…应按正确的顺序返回记录

但是,如果类型为
TextField
,则无法在
word
字段上创建索引,因此,如果表中有很多行,则按
word
排序将花费很长时间

我建议把它改成

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

…这不仅会在
word
列上创建索引,而且还可以确保不能定义两次相同的单词。

类似于
MyModel.objects.order u by('word')
?它以什么方式不起作用?@不要这样做。如果您有一个古怪的DB排序规则,可能会发生。您必须提供有关数据库后端的详细信息以及您正在使用的确切数据。@doniyor您正在使用哪个数据库?MySQL?