django - 如何按名称字段的首字母按字母顺序对对象进行排序

新手上路,请多包涵

我有一个模型,其中包含字段 worddefinition 。词典模型。

在数据库中,我有例如这些对象:

 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 中怎么可能?

原文由 doniyor 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 695
2 个回答

鉴于模型…

 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 列上创建索引,而且还确保您不能两次定义同一个词。

原文由 Aya 发布,翻译遵循 CC BY-SA 3.0 许可协议

既然你标记了你的问题 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)

原文由 Krumelur 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题