python - 如何在 django 中使用模型创建学校时间表
问题描述
嗨,我是 Django 的新手,我想创建一个网页,您可以在其中插入学校课程的时间表,但我很难为该任务编写模型。我为一张桌子、日子和课程做了课程,但我不知道如何不重复信息,因为每个用户都可以输入他们想要的任意数量的时间表,而且每个时间表都有 7 个工作日,因此我会有同一天对象不止一次。
这是我的模型:
from django.urls import reverse
from django.db import models
# Create your models here.
class Table(models.Model):
name = models.CharField(max_length = 100, unique=True)
class Day(models.Model):
# this spesific the table the those days belong to
table = models.ForeignKey(Table,on_delete=models.CASCADE)
name = models.CharField(max_length = 10)
# here we get this day lessons info in a list of dictionaris in a form of json
lessons = models.TextField(null=True)
def __str__(self):
return self.table.name +' : ' + self.name
# here the class contain a lesson information
class Lesson(models.Model):
table = models.ForeignKey(Table,on_delete = models.CASCADE)
name = models.CharField(max_length = 50)
def __str__(self):
return self.name
我很高兴听到创建此数据结构的更好方法。谢谢你。
解决方案
这不是 Django 问题,而是架构问题。
这是您的数据模型的示例:
Teacher
- id
- first_name
- last_name
- science_type (e.g. "math" or "computer science")
Lesson
- id
- name
- teacher_id (FK on Teacher)
- duration (e.g. "60 minutes")
TableDay
- id
- type (e.g. "Monday")
M2MLessonDay
- id
- lesson_id (FK on Lesson)
- day_id (FK on TableDay)
- start_time
这样您就可以计划相同的课程,而无需多次复制相同的数据。最终表格是 M2MLessonDay 按天分组并按 start_time 排序的结果。
推荐阅读
- android - 使用 Picasso 和 Glide 的占位符图像显示但不是实际图像 - Android
- c# - 如何在 C# 中消除二维数组中的重复项
- python - 为上个月的行数添加新列
- c# - 转换为 system.net.mail.mailMessage 错误
- java - 在没有 maven/gradle 插件的情况下运行 cucumber 并生成 html 报告
- python - 如何使用 python 使用基本身份验证获取 Bearer 令牌?
- java - 如何处理restlet资源中的过滤
- java - 处理扩展类中频繁逻辑变化的设计模式
- javascript - Firebase 实时数据库查询字段
- amazon-web-services - 从 Redshift 中的用户定义函数返回表