前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网站搭建-django-学习成绩管理-02-数据库创建

网站搭建-django-学习成绩管理-02-数据库创建

作者头像
zishendianxia
发布2020-02-13 11:19:26
5930
发布2020-02-13 11:19:26
举报
文章被收录于专栏:Python工程师Python工程师

系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2

  • 本系列介绍如何搭建一个网站,后端使用django框架
  • 今天开始介绍一个单独的项目app,关于学生成绩管理网站的搭建
  • 主要功能包括:学习成绩查询,数据统计分析
  • 涉及前端模块:Datatables、ECharts
  • 今天讲讲数据库的创建

Part 1:功能描述

  1. 整个项目包括两个网页:
    • 第1个网页:包含一张表格,可以查看所有学生不同次模拟考的不同科目的学习成绩
    • 第2个网页:单个人成绩折线图查询;单个学生不同科目成绩分布盒形图;成绩排名柱状图
  2. 目前想到这么多,后续再看看

Part 2:数据库设计

  1. 有两张表格:一张表格放置一些常数项,如班级、姓名、模拟考代号、科目
  2. 另一张表格,存放每名学生的成绩,字段有:班级、姓名、模拟考信息、科目、成绩
  3. 以上数据库假设:同一个班级没有相同姓名的学生

Part 3:models

代码语言:javascript
复制
from django.db import models


class Constants(models.Model):
    class_name = models.CharField(blank=True, null=True, max_length=10, verbose_name='班级')
    student_name = models.CharField(blank=True, null=True, max_length=10, verbose_name='学生姓名')
    exam_info = models.CharField(blank=True, null=True, max_length=20, verbose_name='模拟考信息')
    course_name = models.CharField(blank=True, null=True, max_length=20, verbose_name='科目')

    class Meta:
        db_table = 'grades_constants'
        verbose_name = "常数项"
        verbose_name_plural = verbose_name


class StudentGrades(models.Model):
    class_name = models.CharField(blank=True, null=True, max_length=10, verbose_name='班级')
    student_name = models.CharField(null=False, default='', max_length=10, verbose_name='学生姓名')
    exam_info = models.CharField(blank=True, null=True, max_length=20, verbose_name='模拟考信息')
    course_name = models.CharField(blank=True, null=True, max_length=20, verbose_name='科目')
    grades = models.FloatField(blank=False, null=False, default=0.0, verbose_name="学习成绩")

    class Meta:
        unique_together = ('class_name', 'student_name', 'exam_info', 'course_name')
        db_table = 'grades_record'
        verbose_name = "学习成绩记录"
        verbose_name_plural = verbose_name

    
   

代码截图

models.py:写创建数据库对应代码的位置

Part 4:ORM介绍

  1. 在以往的工作中,我们可能是通过数据库操作软件进行工作表的创建,或者通过SQL语句创建
  2. Django项目中我们通过在models创建类,然后再通过migrate创建对应的数据库
    • python manage.py makemigrations
    • python manage.py migrate
  3. 之所以这么做,是因为Django采用的Object-relational mapper的方法,将传统对数据库操作的sql语句改为对类的操作
  4. 简单来理解:一个类就是一张表,通过CharFieldFloatField等类创建对应的字段,不同的数据类型有不同的类与其对应
  5. Meta
    • 定义了表名db_table
    • 创建了联合约束unique_together('class_name', 'student_name', 'exam_info', 'course_name'),不同记录不能有完全相同的以上4个字段

makemigrations

migrate


以上为本次的学习内容,下回见

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档