Python 使用~<;~追加订购
我正在尝试使用PostgreSQL作为后端数据库,按字母顺序排列非英语作者列表 这些是我的模型:Python 使用~<;~追加订购,python,django,Python,Django,我正在尝试使用PostgreSQL作为后端数据库,按字母顺序排列非英语作者列表 这些是我的模型: class Alphabet(models.Model): letter = models.CharField(max_length=2) letter_spell = models.CharField(max_length=3) order = models.SmallIntegerField() def __unicode__(self
class Alphabet(models.Model):
letter = models.CharField(max_length=2)
letter_spell = models.CharField(max_length=3)
order = models.SmallIntegerField()
def __unicode__(self):
return self.letter
class Meta:
ordering = ['order']
class Author(models.Model):
slug = models.CharField(max_length=75)
name = models.CharField(max_length=50)
biography = models.TextField(blank=True)
...
alphabet = models.ForeignKey(Alphabet)
def __unicode__(self):
return self.name
class Meta:
ordering = ['name']
不幸的是,这并没有正确地排序
所以我去了终端,输入:
SELECT * FROM authors ORDER BY name
没有达到预期的效果。然而,这是可行的:
SELECT * FROM authors ORDER BY name USING ~<~
非常感谢您的帮助。您可以编写自定义或默认的。默认排序的原始代码位于https://github.com/django/django/blob/master/django/db/models/sql/compiler.py
在get\u ordering()
函数中。我看不到在查询中使用子句轻松添加的任何方法
顺便说一下,如果Django没有正确订购,可能是一个bug
a = Alphabet.objects.all().prefetch_related('author_set')