首页 > 解决方案 > 如何在 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

我很高兴听到创建此数据结构的更好方法。谢谢你。

标签: pythondjangodjango-modelsdjango-forms

解决方案


这不是 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 排序的结果。


推荐阅读