一、創建模型
1,一對多關系
一本書只有一個出版社,一個出版社可以出版多本書,從而書與出版社之間就構成一對多關系,書是‘多'的一方,出版社是‘一'的一方,我們在建立模型的時候,把外鍵寫在‘多'的一方,即我們要把外鍵寫在book類。
class Book(models.Model): name=models.CharField(max_length=15) price=models.IntegerField() publish=models.ForeignKey('Publish',on_delete=models.CASCADE) #這就是外鍵,其實是有三個參數的,第二參數是指向的字段,此處可以省略,他會自動指向id字段class Publish(models.Model): name=models.CharField(max_length=15) addr=models.CharField(max_length=15) phone=models.IntegerField()在創建模型時不用創建id字段,在makemigrations命令輸入之后,它會在migrations文件夾下生產一個py文件記錄models.py里面所有的改動,在記錄的時候就會自動給你加上自增長的主鍵字段id。
2,多對多關系
一本書可以有多個作者,一個作者可以寫多本書,從而書和作者就構成了多對多的關系,我們在創建模型的時候,把多對多關系寫在其中的任何一張表都可以。
class Book(models.Model): name=models.CharField(max_length=15) price=models.IntegerField() publish=models.CharField(max_length=15) author=models.ManyToManyField('Author',db_table='book_author') 這是創建關系表的代碼,由于是寫在book模型中的,所以第一個參數為另一張表Author,第二個參數為把關系表的名字改為‘book_author',如果不寫,名字會是應用名_本模型名的小寫_另一張模型名的小寫。如‘app_book_author' class Meta: 這是把表名改為‘book',如果不寫,表名為APP名_模型名,如'app_book' db_table='book'class Author(models.Model): name=models.CharField(max_length=15) age=models.IntegerField() class Meta: db_table='author'在創建第三張模型的時候也不用指定book的id和author的id,它會自動把兩個模型的id字段寫進去的3,一對一關系
一個作者只能對應一個作者詳細信息表,他們之間就是一對一關系,這和多對多一樣的,關系寫在哪張表都是可以的
class Author(models.Model): name=models.CharField(max_length=15) age=models.IntegerField() author_info=models.OneToOneField('Author_Info',on_delete=models.CASCADE) 這是一對一關系創建,第二參數是,自動跟隨刪除,當作者不在了,隨即作者的信息也會刪除 class Meta: db_table='author' class Author_Info(models.Model): gf_name=models.CharField(max_length=10) telephone=models.IntegerField() ShenFenZheng=models.IntegerField()4,在此處我們可以使用Django的database:db.sqlite3
步驟如下:

新聞熱點
疑難解答