【Day 16】浅谈 Django model part 2

继续谈谈 model

昨天提到 Django 的 model 好处是可以无痛转移在各个 Python 资料库里。那我们今天深入一点先谈谈 model 内部怎麽运作。

官网传送门

基础

  • 每个模型都是 Python 的一个 class
  • 每个 class 都继承 django.db.models.Model
  • 模型每个 class 的属性都属於资料库的一部分
  • 利用这谢,Django 提供了一个自动生成访问资料库的 API

范例取自官网

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

像是这样一个 model,first_namelast_name 都是 CharField

这一段我们会创建成以下的资料库表格:

CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);

那我们更进阶的讨论一下 Model Field

Model Field

Django 提供多种 Model Field,像是上面的 CharField,就像是字串栏位,里面就规定需要有一个 max_length 的参数。

除了这个还有像是 TextField,就偏向没有最大长度的 CharField

提供多种 Field,每个也都有规定的必须或是非必要参数,欢迎参考官方文档

小结

总之,在我的看法,Model 有点像是现在网站上宣告一个 function,然後这个 function 用 Model Field 来宣告型态!
但型态又有很多种,包含刚刚提到的字元或是文字,还有影像(ImageField)、还有网址(URLField)等等非常多的选项。

就是用来建立资料库,并且在各个资料库间无痛转移。
这就是 Django 的好处。


<<:  【Day16】Git 版本控制 - 多人协作 Fork(1)

>>:  Day 16 中场休息,来做点酷东西

自动化初步-试着用pyautogui操作一般软件

import pyautogui import pyperclip import time def ...

Rails 如何新增 Migration 档案

执行以下指令,就会在 db/migrate/ 目录下产生如 20110203070100_migra...

认识 .NET

干古 微软开发的一个跨平台开源的开发框架, 以前叫 .NET Core, 也继承 .Net Fram...

【LeetCode】Dynamic Programming II

先把之前的笔记随意复制贴上... 明天一定会改的 吧 最简单的 DP:fibonacci 数列 只要...

寝室的秘密授课(三):测试案例 Test Case

诗忆一走进学校的综合餐厅就看到唯心和另一个男生坐在中间的位置聊天,不由得加快脚步。 翟文志眼角余光注...