一、常用的字段类型
字段类型 | 详细解释 |
---|
IntegerField | 整型,映射到数据库中的类型 |
CharField | 字符类型,对应varchar类型,通过max_length指定最大长度 |
TextField | 文本类型,对应text类型 |
BooleanField | 布尔类型,对应tinyint类型,在使用的时候,传递True/False |
DateField | 日期类型,没有时间,对应date类型,在使用的时候,可设置auto_now:每次保存对象时,自动设置该字段为当前日期或auto_now_add:当对象第一次创建时自动设置当前时间,以后不会再发生改变,设置为True或False |
DateTimeField | 日期时间类型,映射到数据库中的datetime类型,在使用的时候,传递datetime.datetime()进去 |
Field的常用参数 | 解释说明 |
---|
primary_key | 指定是否为主键 |
unique | 指定是否唯一 |
null | 指定是否为空,默认为False |
blank | 等于True时form表单验证时可以为空,默认为False |
default | 设置默认值 |
二、表关系的实现
数据库层面 模型类层面
一对一 -----> 外键 -----> OneToOneField
一对多 -----> 外键 + 唯一键 -----> ForeignKeyField
多对多 -----> 中间表:外键 + 联合唯一 -----> ManyToManyField
一对一
学生信息表 <----------------> 学生详细信息表
一对多
学院信息表 <----------------> 学生信息表
多对多
课程表 <----------------> 学生信息表
- 创建模型类(在app student/models.py中)
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=20)
age = models.IntegerField()
sex = models.SmallIntegerField(default=0)
grade = models.ForeignKey('Grade', on_delete=models.SET_NULL, null=True)
def __str__(self):
return '%s-%s' % (self.name, self.age)
class StudentDetail(models.Model):
num = models.CharField(verbose_name='学号', max_length=20, default='')
college = models.CharField(verbose_name='毕业院校', max_length=30, default='')
student = models.OneToOneField('Student', on_delete=models.CASCADE)
class Grade(models.Model):
num = models.CharField(verbose_name='班期', max_length=30)
name = models.CharField(verbose_name='学院名称', max_length=30)
def __str__(self):
return '%s-%s' % (self.num, self.name)
class Course(models.Model):
name = models.CharField(verbose_name='课程名称', max_length=30)
students = models.ManyToManyField('Student', through='Enroll')
def __str__(self):
return 'Course: %s' % self.name
class Enroll(models.Model):
student = models.ForeignKey('Student', on_delete=models.CASCADE)
course = models.ForeignKey('Course', on_delete=models.CASCADE)
pay = models.FloatField(verbose_name='缴费金额', default=0)
c_time = models.DateTimeField(verbose_name='报名时间', auto_now_add=True)
# 创建迁移命令
python manage.py makemigrations
# 执行迁移命令
python manage.py migrate
- 到数据库中查看,如下图所示,五张表已创建好!!!