在应用下的models.py中 编写模型类
from django.db import models
class 模型类名(models.Model):
字段名 = models.字段类型(verbose_name,字段选项)
迁移同步 makemigrations & migrate
例:为bookstore_book表添加一个名为info的字段varchar(100)
class Book(models.Model):
title = models.CharField('书名',max_length=50,defalut='') //这个函数必须有长度
序列化器
from rest_framework import serializers
from music.models import UserInfo
class UserInfoSerializer(serializers.ModelSerializer):
"定义序列化器"
name = serializers.CharField(max_length=10)
pwd = serializers.CharField(max_length=19)
age = serializers.CharField(min_value=0,max_value=18)
class Meta:
model = UserInfo
fields = '__all__'
字段选项
primary_key | 如果设置为True,表示该列为主键,如果指定一个字段为主键,则此数据库表不会创建id字段,不指定则自动创建id字段 |
blank | 设置为True时,字段可以为空。设置为False时,字段是必须填写的 |
null | 设置为True时,表示该列值允许为空。默认为false,如果此选项为false建议加入default选项来设置默认值 |
default | 设置所在列的默认值,如果字段选项null=False建议添加此项 |
db_index | 设置为True时,表示为该列增加索引 |
unique | 设置为True时,表示该字段在数据库中的值必须是唯一(不能重复出现的) |
db_column | 指定列的名称,如果不指定的话则采用属性名作为列名,一般情况下不用给,不用 |
verbose_name | 设置此字段在admin界面上的显示名称 |
choices | 可供选择的选项,如:性别的选项(男女) |
get_FOO_display() | 展示choices对应的值 |
字段选项样例
#创建一个属性,表示用户名称,长度30个字符,必须是唯一的,不能为空,添加索引
name = models.CharField(max_length=30,unique=True,null=False,db_index=True,choices=(
('1','男'),('2','女')
))
模型类Meta类
使用内部Meta类 来给模型赋予属性,Meta类下有很多
class Book(models.Mode):
class Meta:
db_table = 'book' #可以改变当前模型类对应的表名
数据库迁移
生成迁移文件-执行
python3 manage.py makemigrations
python manage.py makemigrations
//将在应用下的models.py文件生成一个中间文件,并保存在migrations文件夹中执行迁移脚本程序-执行
python3 manage.py migrate
python manage.py migrate
//执行迁移程序实现迁移。将每个应用下的migrations目录的中间文件同步回数据库
模型基类
django.db.models.Field
CharField DateField FloatField
RelatedField ForeignKey
特殊类型
- OneToOneField 一对一关联
- ForeignKey 外键关联
- ManyToManyField 多对多关联
- GenericForeignKey 复合关联
类型的选项(可选参数)
- verbose_name
大多数模型的第一个参数
特例: ForeignKey\ManyToManyField\OneToOneField
方便阅读
DateTimeField
- auto_now 更新时间为记录更改时的时间
- auto_now_add 记录创建的时间
使用bulk_create()批量新增数据
user1 = User(name='admin',password='dsa')
user2 = User(name="丛",passworad=password)
user_list = [user1,user2]
User.objects.bulk_create(user_list)