zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    阿里HBase高可用8年“抗战”回忆录
    Service Mesh 初体验
    阿里云HBase推出普惠性高可用服务,独家支持用户的自建、混合云环境集群
    Ververica Platform-阿里巴巴全新Flink企业版揭秘
    深度 | 带领国产数据库走向世界,POLARDB底层逻辑是什么?
    AI加持的阿里云飞天大数据平台技术揭秘
    Nacos 常见问题及解决方法
    数据上云,应该选择全量抽取还是增量抽取?
    一文带你了解 Flink Forward 柏林站全部重点内容
    Oracle数据库中序列(SEQUENCE)的用法详解
  • 原文地址:https://www.cnblogs.com/dorian/p/12370266.html
Copyright © 2011-2022 走看看