定义模型类和数据迁移

定义模型类:

示例:在app中models.py中定义模型类
models.py文件
from django.db import models


# Create your models here.

class Student(models.Model):
    sex_choices = (
        (0, "女"),
        (1, "男"),
        (2, "保密")
    )

    # id=models.AutoField(primary_key=True)
    name = models.CharField(max_length=32, unique=True, verbose_name="姓名")
    age = models.SmallIntegerField(verbose_name="年龄")
    sex = models.SmallIntegerField(choices=sex_choices)
    birthday = models.DateField()

    class Meta:
        db_table = "db_student"


数据库表名:

## 指明数据库表名
db_table

主键:

## django会为表创建自动增长的主键列,每个模型只能有一个主键列
## 如果使用选项设置某个字段的约束属性为主键列(primary_key)后,django不会再创建自动增长的主键列
class Student(models.Model):
    # django会自动在创建数据表的时候生成id主键
    id = models.AutoField(primary_key=True, null=False, verbose_name="主键") # 设置主键

属性命名限制:

属性名 = models.字段类型(约束选项, verbose_name="注释")

字段类型:

类型 说明
AutoField 自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性
BooleanField 布尔字段,值为True或False
NullBooleanField 支持Null、True、False三种值
CharField 字符串,参数max_length表示最大字符个数,对应mysql中的varchar
TextField 大文本字段,一般大段文本(超过4000个字符)才使用。
IntegerField 整数
DecimalField 十进制浮点数, 参数max_digits表示总位数, 参数decimal_places表示小数位数,常用于表示分数和价格 Decimal(max_digits=7, decimal_places=2) ==> 99999.99~ 0.00
FloatField 浮点数
DateField 日期
参数auto_now表示每次保存对象时,自动设置该字段为当前时间。
参数auto_now_add表示当对象第一次被创建时自动设置当前。
参数auto_now_add和auto_now是相互排斥的,一起使用会发生错误。
TimeField 时间,参数同DateField
DateTimeField 日期时间,参数同DateField
FileField 上传文件字段,django在文件字段中内置了文件上传保存类, django可以通过模型的字段存储自动保存上传文件, 但是, 在数据库中本质上保存的仅仅是文件在项目中的存储路径!!
ImageField 继承于FileField,对上传的内容进行校验,确保是有效的图片

约束选项:

选项 说明
null 如果为True,表示允许为空,默认值是False。相当于python的None
blank 如果为True,则该字段允许为空白,默认值是False。 相当于python的空字符串,“”
db_column 字段的名称,如果未指定,则使用属性的名称。
db_index 若值为True, 则在表中会为此字段创建索引,默认值是False。 相当于SQL语句中的key
default 默认值,当不填写数据时,使用该选项的值作为数据的默认值。
primary_key 如果为True,则该字段会成为模型的主键,默认值是False,一般不用设置,系统默认设置。
unique 如果为True,则该字段在表中必须有唯一值,默认值是False。相当于SQL语句中的unique

注意:null是数据库范畴的概念,blank是表单验证范畴的


数据迁移:

在编写完成models.py文件配置后,执行命令
## 在migrations下生成文件,描述了数据表结构的类文件
python manage.py makemigrations
## 同步到数据库中
python manage.py migrate
### 登录数据库进行查询
对数据库表结构进行改变时操作:
models.py文件
from django.db import models


# Create your models here.

class Student(models.Model):
    sex_choices = (
        (0, "女"),
        (1, "男"),
        (2, "保密")
    )

    # id=models.AutoField(primary_key=True)
    name = models.CharField(max_length=32, unique=True, verbose_name="姓名")
    age = models.SmallIntegerField(verbose_name="年龄")
    sex = models.SmallIntegerField(choices=sex_choices)
    birthday = models.DateField()
	################# 比上方示例新增两行
    classmate = models.CharField(db_column="class", max_length=5, db_index=True, verbose_name="班级",default='')
    description = models.TextField(default="", verbose_name="个性签名")
	################# 
    class Meta:
        db_table = "db_student"

在编写完成models.py文件配置后,执行命令
## 在migrations下生成文件,描述了数据表结构的类文件
python manage.py makemigrations
## 同步到数据库中
python manage.py migrate
### 登录数据库进行查询
图片示例:

image
image
image

posted @   咖啡馆  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示