django查询数据库操作,django queryset排序
在Django应用程序中,您可能希望根据字段的值对搜索结果进行排序,例如,按字母顺序。
然后,使用order_by()方法就可以完成了。
Publisher.objects.order_by(名称)
[publisher:apress= ,publisher:oreilly=]
/Publisher3360/Publisher3360类似于前面的all()示例。SQL语句中有更多指定排序的部分:
选择id,姓名,地址,城市,州省,国家,网站
FROMbooks _出版商
ORDERBYname我们可以对任何字段进行排序:
Publisher.objects.order_by(地址)
[发布者:oreilly= ,发布者:apress=]
publisher . objects . order _ by( state _ province )
[publisher:apress= ,publisher:oreilly=]
/publisher 3360/publisher 3360/publisher 3360/publisher 3360如果需要按多个字段排序(如果第一个字段的值相同,将使用第二个字段),可以使用多个参数,如下所示:
Publisher.objects.order_by(省/市/自治区,地址)
[publisher:apress= ,publisher:oreilly=]
/Publisher3360/Publisher3360我们还可以在前面加上减号前缀来指定反向排序:
publisher . objects . order _ by(-name )
[发布者:oreilly= ,发布者:apress=]
/Publisher3360/Publisher3360虽然灵活,但每次都用order_by()似乎有点啰嗦。大多数时候,您通常只对某些字段进行排序。在这种情况下,Django允许您指定模型的默认排序方法:
classPublisher(模型。型号):
名称=型号。CharField(max_length=30)
地址=型号。CharField(max_length=50)
城市=模特。CharField(max_length=60)
state _ province=模型。CharField(max_length=30)
国家=型号。CharField(max_length=50)
网站=模特。URLField()
def__unicode__(self):
returnself.name
**classMeta:**
**ordering=[name]**现在,让我们来接触一个新概念。类,嵌入在类发布者的定义中(如果类发布者是大写,那么类元应该在它下面缩进4个空格——根据Python的传统)。您可以在任何模型类中使用元类来设置一些与特定模型相关的选项。附录b中有Meta中所有选项的完整参考,现在,我们只关注选项排序就足够了。如果设置了这个选项,那么除非你专门使用order_by()进行搜索,否则当你使用Django的数据库API进行搜索时,Publisher对象的相关返回值默认会按name字段排序。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。