Django Model 模型創建

Django Model 模型

Django Model層是Django的數據模型層,每個Model類就是數據庫中的一張表;html

咱們須要注意下面幾點:mysql

  • model通常都是定義在不一樣的APP的models.py模塊文件中,能夠是一個,也能夠是多個;nginx

  • 不一樣model之間能夠相互關聯,相似表直接的關聯;sql

  • APP中一旦定義了model,必須將此APP添加到settings文件中;數據庫

  • 且必定要記得運行makemigrations檢查model更新和migrate同步數據模型在數據庫中建表(這兩個操做你們記得在哪裏操做嗎,以前的文章有寫,快捷鍵就是Alt+Ctrl+R);django

如何定義一個數據model模型

咱們一塊兒來看一下如何定義一個數據model模型,具體有哪些操做:app

  • 首先咱們須要在APP中的models.py建立Model,咱們用courses APP來操做一下
from django.db import models

class Course(models.Model):
    name = models.CharField(max_length=50, verbose_name="課程名")
    desc = models.CharField(max_length=300, verbose_name=u"課程描述")
    degree = models.CharField(choices=(("primary", '初級'), ("middle","中級"), ("junior", "高級")), max_length=10, verbose_name='課程難度')
    students = models.IntegerField(default=0, verbose_name="學習人數")
    # 須要安裝pillow,圖片處理庫
    image = models.ImageField(upload_to="courses/%Y/%m", verbose_name="課程圖片", max_length=100)

    class Meta:
        verbose_name = "課程"
        verbose_name_plural = verbose_name

咱們知道每個Model類就是數據庫中的一張表,那這段代碼中咱們定義了五個字段,表明相應的數據庫表中也有五個字段,你們注意一下字段的類型(等一下咱們再來說解關於字段類型), 這個表其實就想當於如下代碼:工具

create table courses_course(
    id int not null primary key,
    name varchar(50),
    desc varchar(300),
    degree varchar(10),
    students int(11),
    image varchar(100),
);

而後咱們須要在數據庫中生成數據表,執行makemigrations在app下創建migrations目錄,並記錄下全部關於models.py的改動,好比0001_initial.py, 可是這個改動尚未做用到數據庫文件,接着執行migrate將改動做用到數據庫文件,好比產生table之類;學習

最後能夠登陸mysql數據庫檢查表是否建立成功,你們還記得怎麼登陸mysql數據庫嗎? 先開啓mysql數據庫,我是用的Winginx中的mysql數據庫,因此我只須要在Winginx打開就好,而後在命令行工具中輸入:命令行

mysql -ufirst_project -p123456

個人用戶名是first_project ,密碼是123456

而後咱們在數據庫中查看錶是否成功

use First_Project   # 個人數據庫是First_Project 

 show tables;  # 查看全部表

數據庫表.jpg 咱們是否是能看到有一個courses_course表呀,而後輸入命令行desc courses_course; 查看錶字段.jpg

Field 字段類型

IntegerField:整型字段;

CharField:字符型字段,該字段類型有一個必需參數:max_length 在數據庫水平限定了字符串最大長度;

ImageField:圖像字段,能自動驗證上傳的對象是否爲合法的圖像;

FloatField:浮點字段;

AutoField:根據已有id自增加的整型惟字段,通常每一個model類不需設置該字段,由於django會爲每一個model自動設置;

我這裏列舉了幾個比較經常使用的字段類型,你們若是想知道更多能夠查看Django官方文檔:https://docs.djangoproject.com/en/2.1/ref/models/fields/

參考視頻:https://www.9xkd.com/user/plan-view.html?id=4022383016