国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django中對數據查詢結果進行排序的方法

2020-01-04 18:03:06
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Django中對數據查詢結果進行排序的方法,利用Python代碼代替SQL進行一些簡單的操作,需要的朋友可以參考下

在你的 Django 應用中,你或許希望根據某字段的值對檢索結果排序,比如說,按字母順序。 那么,使用 order_by() 這個方法就可以搞定了。

 

 
  1. >>> Publisher.objects.order_by("name"
  2. [<Publisher: Apress>, <Publisher: O'Reilly>] 

跟以前的 all() 例子差不多,SQL語句里多了指定排序的部分:

 

 
  1. SELECT id, name, address, city, state_province, country, website 
  2. FROM books_publisher 
  3. ORDER BY name; 

我們可以對任意字段進行排序:

 

 
  1. >>> Publisher.objects.order_by("address"
  2. [<Publisher: O'Reilly>, <Publisher: Apress>] 
  3.  
  4. >>> Publisher.objects.order_by("state_province"
  5. [<Publisher: Apress>, <Publisher: O'Reilly>] 

如果需要以多個字段為標準進行排序(第二個字段會在第一個字段的值相同的情況下被使用到),使用多個參數就可以了,如下:

 

 
  1. >>> Publisher.objects.order_by("state_province""address"
  2. [<Publisher: Apress>, <Publisher: O'Reilly>] 

我們還可以指定逆向排序,在前面加一個減號 - 前綴:

 

 
  1. >>> Publisher.objects.order_by("-name"
  2. [<Publisher: O'Reilly>, <Publisher: Apress>] 

盡管很靈活,但是每次都要用 order_by() 顯得有點啰嗦。 大多數時間你通常只會對某些 字段進行排序。 在這種情況下,Django讓你可以指定模型的缺省排序方式:

 

 
  1. class Publisher(models.Model): 
  2. name = models.CharField(max_length=30) 
  3. address = models.CharField(max_length=50) 
  4. city = models.CharField(max_length=60) 
  5. state_province = models.CharField(max_length=30) 
  6. country = models.CharField(max_length=50) 
  7. website = models.URLField() 
  8.  
  9. def __unicode__(self): 
  10. return self.name 
  11.  
  12. **class Meta:** 
  13. **ordering = ['name']** 

現在,讓我們來接觸一個新的概念。 class Meta,內嵌于 Publisher 這個類的定義中(如果 class Publisher 是頂格的,那么 class Meta 在它之下要縮進4個空格--按 Python 的傳統 )。你可以在任意一個 模型 類中使用 Meta 類,來設置一些與特定模型相關的選項。 在 附錄B 中有 Meta 中所有可選項的完整參考,現在,我們關注 ordering 這個選項就夠了。 如果你設置了這個選項,那么除非你檢索時特意額外地使用了 order_by(),否則,當你使用 Django 的數據庫 API 去檢索時,Publisher對象的相關返回值默認地都會按 name 字段排序。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永城市| 舒城县| 岳池县| 沙雅县| 景宁| 施秉县| 巴塘县| 达拉特旗| 额敏县| 扎鲁特旗| 平原县| 聊城市| 鱼台县| 册亨县| 广南县| 龙州县| 仙桃市| 宣武区| 泾川县| 高邑县| 大兴区| 浦江县| 红桥区| 新安县| 贡觉县| 深泽县| 四子王旗| 台州市| 澎湖县| 宜兰县| 尉犁县| 天津市| 洛阳市| 陇西县| 如东县| 祁连县| 阳城县| 汝阳县| 灵璧县| 枣庄市| 乳山市|