0015 DRF框架开发(02 创建模型)

Posted dorian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0015 DRF框架开发(02 创建模型)相关的知识,希望对你有一定的参考价值。

  上一节介绍了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

 

以上是关于0015 DRF框架开发(02 创建模型)的主要内容,如果未能解决你的问题,请参考以下文章

片段的视图模型

DRF框架之Serializer序列化器的序列化操作

Django REST框架--认证和权限

Django DRF 将 request.user 添加到模型序列化器

DRF框架serializer之视图优化

DRF框架之ModelSerializer序列化器