上一节介绍了DRF开发的基本流程,共五个步骤:

  1 创建模型

  2 创建序列化器

  3 编写视图

  4 配置URL

  5 运行测试

  本节主要讲解创建模型。

  构建学校,教师,学生三个模型,这三个模型之间的关系是:学校和教师是一对多的关系,教师和学生是多对多的关系。为了更直观的体现多对多的关系,把一个多对多,转化为两个一对多。需要另外创建一个教师学生模型,用于标注教师和学生的对应关系。

  因此,本节主要构建四个模型。全部存在Applications/Examples/models.py文件中。

  在Django中,所有模型的创建都必须继承models。因此,在models.py文件中,默认就引用了这个包。

from django.db import models

1 学校模型

class Schools(models.Model):
name = models.CharField(max_length=50, help_text='学校名称')
email = models.EmailField(max_length=100, help_text='电子邮箱')
phone = models.CharField(max_length=14, help_text='学校座机')
employment_rate = models.FloatField(help_text='就业率') class Meta:
db_table = 'Schools' def __str__(self):
return self.name

2 教师模型

class Teachers(models.Model):
name = models.CharField(max_length=20, help_text='老师姓名')
school = models.ForeignKey(to=Schools, on_delete=models.CASCADE, help_text='所属学校') class Meta:
db_table = 'Teachers' def __str__(self):
return self.name

3 学生模型

class Students(models.Model):
name = models.CharField(max_length=20, help_text='学生姓名')
SEX_CHOICE = (
(0, '男'),
(1, '女')
)
sex = models.IntegerField(choices=SEX_CHOICE, help_text='性别')
subject = models.CharField(max_length=30, help_text='所选科目')
school = models.ForeignKey(to=Schools, on_delete=models.CASCADE, help_text='所属学校') class Meta:
db_table = 'Students' def __str__(self):
return self.name

4 教师学生模型

class TeacherAndStudent(models.Model):
teacher = models.ForeignKey(to=Teachers, on_delete=models.CASCADE, help_text='老师')
student = models.ForeignKey(to=Students, on_delete=models.CASCADE, help_text='学生') class Meta:
db_table = 'TeacherAndStudent' def __str__(self):
return self.teacher.name + '/' + self.student.name  

  模型建好后,要执行数据迁移。在PyCharm Terminal下执行:

python manage.py makemigrations
python manage.py migrate

0009 基于DRF框架开发(02 创建模型)的更多相关文章

  1. 0010 基于DRF框架开发(03 模型序列化器)

    序列化器:是指从数据库提取数据,转化前端所需要的数据格式并返回到前端. 反序列化器:是指把前端传回的数据,转换成数据库需要的格式,存入数据库. DRF提供了两种序列化器: 模型序列化器:是指和模型关联 ...

  2. 0008 基于DRF框架开发(01 DRF开发的基本流程)

    1 创建模型 由于之前在<004 工程配置>中,已在Applications/Organizations/models中创建了一个UserInfo模型.此处引用这个模型. from dja ...

  3. 0014 基于DRF框架开发(02 基类视图 GenericAPIView)

    前端于对数据操作的请求基本上就分为四类:增删改查,即增加.删除.修改.查询. 而DRF把前端请求分为两个大类:带ID参数请求和不带ID参数请求. 不带ID参数请求包括:增加.分布多条查询 带ID参数请 ...

  4. 0013 基于DRF框架开发(01 基类视图 APIView)

    之前学习了模型序列化和普通序列化,我们用最简单的视图和url实现了对序列化的操作. 而实际上,象之前那种由DRF自动生成所有的视图和url的情况,在应用是使用很少.而需要用户根据实际业务需求,自定义视 ...

  5. 0011 基于DRF框架开发(04 普通序列化器)

    普通序列化器和模型无关,只是对针对提交字段的定义. 本文定义三个序列化器: 教师序列化器,学生序列化器,教师学生序列化器.这三个序列化器都使用普通序列化器. 1 教师序列化器 在Application ...

  6. 0012 基于DRF框架开发(04 序列化器的字段与选项)

    1 常用字段类型 字段 构造方式 BooleanField BooleanField() NullBooleanField NullBooleanField() CharField CharField ...

  7. MapReduce教程(一)基于MapReduce框架开发<转>

    1 MapReduce编程 1.1 MapReduce简介 MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,用于解决海量数据的计算问题. MapReduce分成了两个部分: ...

  8. 基于SSH框架开发的《高校大学生选课系统》的质量属性的实现

    基于SSH框架开发的<高校大学生选课系统>的质量属性的实现 对于可用性采取的是错误预防战术,即阻止错误演变为故障:在本系统主要体现在以下两个方面:(1)对于学生登录模块,由于初次登陆,学生 ...

  9. 基于NopCommerce框架开发的微信小程序UrShop

    Urshop小程序商城 介绍 UrShop小程序商城 2.0发布啦,发布地址https://gitee.com/urselect/urshop UrShop 根据NopCommerce框架开发的,基于 ...

随机推荐

  1. 2、HotSpot虚拟机对象探秘

    基于使用优先的原则,以常用的虚拟机HotSpot和常用的内存区域Java堆为例,深入探讨HotSpot虚拟机在Java堆中对象分配.布局和访问的全过程. 1.对象的创建 划分可用空间 在语言层面上,创 ...

  2. Descriptor - Python 描述符协议

    描述符(descriptor) descriptor 是一个实现了 __get__. __set__ 和 __delete__ 特殊方法中的一个或多个的. 与 descriptor 有关的几个名词解释 ...

  3. qt creator源码全方面分析(2-5)

    目录 Creating Wizards in Code 介绍 相关类 IWizardFactory的设置器和获取器 Creating Wizards in Code 介绍 如果基于模板的自定义向导提供 ...

  4. 面向对象之包装类与Object类

    一.包装类(Wrapper) 1.包装类出现原因 为了使8种基本数据类型的变量具有类的特征,引入包装类 2.类型间转化 ① 基本数据类型---->对应的包装类:自动装箱 包装类---->对 ...

  5. lwip 2.0.2 snmp mib ipv6

    1.3.6.1.2.1 - SNMP MIB-2 Submitted by Harald.T.Alvestrand at uninett.no from host aun.uninett.no (12 ...

  6. mongo操作备忘

    #查看collection内 某个字段条目数 db.dictionary_system.find({"name":"xxx"}).count() #清空某个co ...

  7. mysql中大数据表alter增加字段报错:"1034 Incorrect key file for table 'table_name'; try to repair it"

    mysql中大数据表alter增加字段报错:"1034 Incorrect key file for table 'table_name'; try to repair it" 现 ...

  8. MySQL中大数据表增加字段,增加索引实现

    MySQL中大数据表增加字段,通过增加索引实现 普通的添加字段sql ALTER TABLE `table_name` ADD COLUMN `num` int(10) NOT NULL DEFAUL ...

  9. linux硬盘分区、格式化、挂载超详细步骤(fdisk/parted))

  10. [转]adbkey与adbkey.pub

    转载至:https://blog.csdn.net/caibaihui/article/details/46862591 error: device unauthorized. Please chec ...