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?