本文主要描述Django數據中一對一的數據關系,創建app等配置不再贅述。
Django操作數據庫,使用ORM
ORM:關系映射對象,把傳統的SQL語句封裝成了類和對象的形式,在操作表中的記錄時,就像在操作類和對象一樣。
使用默認數據庫:sqlite
操作在models.py文件中完成。
多對多關系
舉例:一個出版社發表多個文章,一篇文章也可以對多個出版社發表
ManyToManyFiled():關聯兩個表的函數,但是函數的設置位置,在模型中任選一個即可,不能在兩個模型中都設置此函數。
class Publication(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(max_length=30, null=True) # 出版社名稱 class Meta: db_table = 'Publication' def __unicode__(self): return 'Publication-Name: %s' % self.title class Article(models.Model): id = models.AutoField(primary_key=True) headline = models.CharField(max_length=100, null=True) # 讓文章關聯出版社 publication = models.ManyToManyField(Publication) class Meta: db_table = 'Article' def __unicode__(self): return 'Article-Name: %s' % self.headline創建完數據庫模型之后,就需要創建數據庫變更文件,應用數據庫變更文件創建表的操作。 創建數據庫變更文件:python manage.py makemigrations 應用數據庫變更文件:python manage.py migrate 可以使用SQLite可視化工具查看已經建立成功的數據庫表 由於未進行其他配置,所以只能在shell環境下,對數據庫進行操作。 進入shell環境的命令:python manage.py shell
注意點:
1)注意ManyToManyField()的設置位置;該實例中設置了Article模型中,在綁定兩張表的時候,利用Article的對象a1進行綁定的,a1.publication.add()。但是不能使用Publication的對象p1進行綁定(p1.article.add())。
兩張表之間的相互查詢關系
查詢a1這篇文章所屬的出版社有哪些
print a1.publication.all()
查詢某一出版社,所包含的所有文章有哪些
print p1.article_set.all()