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

首頁 > 編程 > Python > 正文

舉例講解Django中數據模型訪問外鍵值的方法

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

這篇文章主要介紹了舉例講解Django中數據模型訪問外鍵值的方法,Django是最具人氣的Python web開發框架,需要的朋友可以參考下

先設置一個關于書本(book)的數據模型:

 

 
  1. from django.db import models 
  2.  
  3. class Publisher(models.Model): 
  4. name = models.CharField(max_length=30) 
  5. address = models.CharField(max_length=50) 
  6. city = models.CharField(max_length=60) 
  7. state_province = models.CharField(max_length=30) 
  8. country = models.CharField(max_length=50) 
  9. website = models.URLField() 
  10.  
  11. def __unicode__(self): 
  12. return self.name 
  13.  
  14. class Author(models.Model): 
  15. first_name = models.CharField(max_length=30) 
  16. last_name = models.CharField(max_length=40) 
  17. email = models.EmailField() 
  18.  
  19. def __unicode__(self): 
  20. return u'%s %s' % (self.first_name, self.last_name) 
  21.  
  22. class Book(models.Model): 
  23. title = models.CharField(max_length=100) 
  24. authors = models.ManyToManyField(Author) 
  25. publisher = models.ForeignKey(Publisher) 
  26. publication_date = models.DateField() 
  27.  
  28. def __unicode__(self): 
  29. return self.title 

訪問外鍵(Foreign Key)值

當你獲取一個ForeignKey 字段時,你會得到相關的數據模型對象。 例如:

 

 
  1. >>> b = Book.objects.get(id=50) 
  2. >>> b.publisher 
  3. <Publisher: Apress Publishing> 
  4. >>> b.publisher.website 
  5. u'http://www.apress.com/' 

對于用`` ForeignKey`` 來定義的關系來說,在關系的另一端也能反向的追溯回來,只不過由于不對稱性的關系而稍有不同。 通過一個`` publisher`` 對象,直接獲取 books ,用 publisher.book_set.all() ,如下:

 

 
  1. >>> p = Publisher.objects.get(name='Apress Publishing'
  2. >>> p.book_set.all() 
  3. [<Book: The Django Book>, <Book: Dive Into Python>, ...] 

實際上,book_set 只是一個 QuerySet,所以它可以像QuerySet一樣,能實現數據過濾和分切,例如:

 

 
  1. >>> p = Publisher.objects.get(name='Apress Publishing'
  2. >>> p.book_set.filter(name__icontains='django'
  3. [<Book: The Django Book>, <Book: Pro Django>] 

屬性名稱book_set是由模型名稱的小寫(如book)加_set組成的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜康市| 内黄县| 那坡县| 永安市| 阳朔县| 义乌市| 克什克腾旗| 桐柏县| 高要市| 衡水市| 襄汾县| 灵丘县| 子长县| 岐山县| 万州区| 家居| 辰溪县| 屏边| 资中县| 台东市| 永善县| 礼泉县| 饶平县| 达州市| 彭山县| 武宣县| 陇南市| 望奎县| 延安市| 离岛区| 金华市| 台中县| 彭泽县| 陆川县| 湖北省| 临海市| 张家港市| 纳雍县| 米脂县| 易门县| 古丈县|