1. 程式人生 > 實用技巧 >python測試開發django(9)--模型models詳解

python測試開發django(9)--模型models詳解

前言

Django模型是與資料庫相關的,與資料庫相關的程式碼一般寫在models.py中,Django支援sqlite3,MySQL,PostgreSQL等資料庫

只需要在settings.py中配置即可,不用更改models.py中的程式碼。當我們的web專案需要新增一張表和欄位內容時,需要在models.py裡面寫相關內容。

配置資料庫

django配置mysql資料庫教程參考前面一篇https://www.cnblogs.com/canglongdao/p/14095028.html

1.先安裝mysql資料庫驅動;

2.settings.py檔案中找到DATABASES配置項,設定連線mysql,賬號、密碼、域名、埠;

注意:django裡面無法建立資料庫,資料庫名稱django1(名稱可隨意命名)需要手動建立;

   django裡面只能建立表名;

建立表

編輯models.py檔案,比如我想新增一張user表,有2個欄位:name、age。name是字串型別,age是int型別

希望建立的表和欄位效果設計如下(用navicat工具檢視的)

那麼對應models.py檔案程式碼為

#models.py
from django.db import models

# Create your models here.
class User(models.Model):
    name=models.CharField(max_length=30)
    age=models.IntegerField()  

接著開啟cmd,cd到django的根目錄,執行2個指令;

python manage.py makemigrations
python manage.py migrate

makemigrations和migrate

makemigrations這一步執行後,會在當前app目錄下生成一個migrations資料夾,該資料夾的內容就是資料庫要執行的內容;

migrate就是執行之前生成的migrations檔案,這一步才是操作資料庫的一步,執行完成後,資料庫裡面會新增一張表xjyn_user

  • 新建的表名是app名稱_class類名稱的組合,自動轉化成小寫,也就是xjyn_user
  • name=models.CharField(max_length=30) 這個表示name欄位是字串型別(CharField),最大長度是30個字串。
  • age=models.IntegerField() 這個表示age欄位是int型別(charField)
  • id是預設的主鍵

欄位型別

django的models裡面欄位型別除了上面的常用的models.CharField 和models.IntegerField,還有更多的型別;

1.models.AutoField 自增列=int(11)

如果沒有的話,預設生成一個名稱為id的列,如果要顯示的自定義一個自增列,必須將列設定為主鍵primary_key=True。

2.models.CharField 字串欄位

必須max_length 引數

3.models.BooleanField 布林型別=tinyint(1)

  不能為空,Blank=True

4.models.ComaSeparatedIntegerField 用逗號分割的數字=varchar

繼承CharField,所以必須max_length引數

5、models.DateField  日期型別 date
  對於引數,auto_now =True則每次更新都會更新這個時間;auto_now_add 則只是第一次建立新增,之後的更新不再改變。
6、models.DateTimeField  日期型別 datetime
  同DateField的引數
7、models.Decimal  十進位制小數型別= decimal
  必須指定整數位max_digits和小數位decimal_places
8、models.EmailField  字串型別(正則表示式郵箱)=varchar
  對字串進行正則表示式
9、models.FloatField  浮點型別= double
10、models.IntegerField  整形
11、models.BigIntegerField  長整形
  integer_field_ranges ={
    'SmallIntegerField'