• 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
  • 相关阅读:
    2101 可达性统计
    POJ1179 Polygon
    POJ1015 Jury Compromise
    读入输出优化
    队列优化dijsktra(SPFA)的玄学优化
    5104 I-country
    CH5102 Mobile Service
    P1005 矩阵取数游戏
    (模板)线段树2
    POJ3666 Making the Grade
  • 原文地址:https://www.cnblogs.com/dorian/p/12370266.html
Copyright © 2020-2023  润新知