Django 設置Mysql 數據庫字段的類型:python
from django.db import models # Create your models here. class UserInfo(models.Model): #新建表 username=models.CharField(max_length=50) #新建靜態字段 password=models.CharField(max_length=50) #新建靜態字段 gender=models.BooleanField() #性別 用布爾類型,0或1 表明男女 age=models.IntegerField(default=18) #年齡 數字類型 memo=models.TextField(default='xxx') #文本類型 creatdate=models.DateTimeField(default='2016-12-06 16:52') #時間類型 #ip類型,protocol協議, 能夠等於,ipv4,ipv6,both ,不設置,默認爲both ip = GenericIPAddressField(protocol='both')
Django 操控 Mysql 數據庫 表之間的聯繫 (外鍵)sql
一、一對多關係數據庫
type=models.ForeignKey('UserType') django
# django 生成的表外鍵字段當中, 會自動在 外鍵字段後面加上 _id ,如 type_id服務器
class UserType(models.Model): #主表 name=models.CharField(max_length=50) class UserInfo(models.Model): #新建表 username=models.CharField(max_length=50) #新建靜態字段 password=models.CharField(max_length=50) #新建靜態字段 gender=models.BooleanField() #性別 用布爾類型,0或1 表明男女 age=models.IntegerField(default=18) #年齡 數字類型 memo=models.TextField(default='xxx') #文本類型 creatdate=models.DateTimeField(default='2016-12-06 16:52') #時間類型 type=models.ForeignKey('UserType') #給子表設置外鍵
注意: 當用 for 循環遍歷 userinfo = UserInfo() 內容的時候 --> for raw in userinfo
raw.type_id (django 會自動給外鍵字段加_id) --------> 獲得 對應的id 數據
raw.type ---------------> 返回 UserType 對象 (ID =XXX)
此時 用 raw.type.name --------------> 就能夠獲得 對應外鍵關係 的名稱app
二、多對多關係spa
models.ManyToManyField('Group')code
通常有2 張表,經過第3張表 來創建多對多關係,Django 會自動創建第3張表對象
class Group(models.Model): name=models.CharField(max_length=50) class User(models.Model): name=models.CharField(max_length=50) Email=models.CharField(max_length=50) group_relation=models.ManyToManyField('Group') #多對多關係
三、一對一關係ip
models.OneToOneField('Group')
特別說明:
當你的數據庫不能同步,之前建立過相同的表,後來刪除致使 執行migrate 不能新建表的時候
可以使用下面命令解決
python manage.py migrate appname --fake #appname指你新建的app的名字
此命令還可解決 django.db.utils.OperationalError: (1050, "Table '表名' already exists) 錯誤
因爲Django 查詢語法的工做方式,字段名稱中連續的下劃線不能超過一個。
class Example(models.Model): foo__bar = models.IntegerField() #不能定義 foo__bar (兩個下劃線)