Django 提供完善的模型(model)層主要用來建立和存取數據,不須要咱們直接對數據庫操做。
Django 模型基礎知識:
一、每一個模型是一個 Python 類,繼承 django.db.models.model 類。
二、該模型的每一個屬性表示一個數據庫表字段。數據庫
程序代碼以下:django
# 建立應用程序數據表模型(對應數據庫的相關操做)
from django.db import models # 導入models模塊
class Event(models.Model): # 建立Event類,繼承models.Model
name = models.CharField(max_length=100) limit = models.IntegerField() status = models.BooleanField() def __str__(self): return self.name class Guests(models.Model): # 建立Guests,繼承models.Model
event = models.ForeignKey('Event') # 引用外鍵,即Event對象
realname = models.CharField(max_length=64) phone = models.CharField(max_length=16) class Meta: unique_together = ("event","phone") def __str__(self): return self.realname
執行後報錯信息以下:編輯器
根據報錯提示能夠看出緣由 ,說少了一個必須的位置參數:on_delete,這個不耍賴,確實是少了一個這樣的參數。函數
其實在編輯器中這一步的代碼也是有提示的:spa
在這一行的末尾括號處有個小的下劃線。前邊說了少了一個參數 ,可是應該怎麼把這個參數加進去呢????code
解決辦法:對象
將文中的這一行代碼:blog
event = models.ForeignKey('Event')
改成:
event = models.ForeignKey('Event',on_delete = models.CASCADE)
雖然知道爲解決辦法可是到底爲啥子會報這個錯呢?
緣由:在django2.0後,定義外鍵和一對一關係的時候須要加on_delete選項,此參數爲了不兩個表裏的數據不一致問題,否則會報錯。
固然on_delete這個參數的值不單單有:CASCADE
還有以下:
CASCADE | 此值設置,是級聯刪除 |
PROTECT | 此值設置,是會報完整性錯誤 |
SET_NULL | 此值設置,會把外鍵設置爲null,前提是容許爲null |
SET_DEFAULT | 此值設置,會把設置爲外鍵的默認值 |
SET() | 此值設置,會調用外面的值,能夠是一個函數 |