django - 学校时间表的 Django 模型?
问题描述
我正在为每个房间构建一个学校时间表应用程序?有我的模型。我有什么遗漏吗?
class Building(models.Model):
bid = models.CharField(max_length=10, primary_key=True)
name = models.CharField(max_length=255, unique=True)
class Meta:
ordering = ['bid']
def __str__(self):
return f'{self.bid}'
class Room(models.Model):
building = models.ForeignKey(Building, on_delete=models.CASCADE,
related_name='rooms')
number = models.PositiveIntegerField()
availability = models.BooleanField(default=False)
power = models.BooleanField(default=False)
class Meta:
ordering = ['building', 'number']
unique_together = ['building', 'number']
def __str__(self):
return f'{self.building.bid}/{self.number}'
class Occurrence(models.Model):
date = models.DateField('Date')
start_period = models.ForeignKey(Period, on_delete=models.CASCADE, related_name='start_at')
end_period = models.ForeignKey(Period, on_delete=models.CASCADE, related_name='end_at')
class Meta:
abstract = True
class Period(models.Model):
start = models.TimeField()
end = models.TimeField()
objects = PeriodManager()
class Meta:
ordering = ['start']
def __str__(self):
return f'{self.start}-{self.end}'
def check_time(self):
return True if self.start < self.end else False
def check_overlap(self):
pass
class TimetableModel(models.Model):
class Meta:
abstract =True
将有一个模型名称 Booking,它从 Occurrence 延伸,以允许学生注册以分期使用房间。我想将时间表模型链接到房间模型,以提供上下文以呈现类似于学校时期的房间和时期模型的不同周时间表。有什么建议吗?
解决方案
我认为您可能需要重新考虑您的实际模型以及您想要实现的目标。
查看您的模型,您似乎为您尝试做的不同方面创建模型,但模型之间似乎没有连贯性。
例如,查看它的一种方法如下:
Building
- Name
Room
- Number
- Building (FK)
Booking
- Room
- Period (you could just have statically defined list assume these are fixed)
- Duration (number of periods, this removes the need to specify end as you can calculate it.
要进行预订,您需要了解以下信息: - 您要预订的房间 - 您要使用的时间段 - 您想预订多长时间(即 2 个时间段)
从数据的角度来看,这可能是您可以构建的最简单的模型(简单总是更好)。在显示可用内容方面,您可以在预订时进行(预订表格)。
我希望这能让您了解如何解决这个问题,我没有在这个答案中创建模型,因为我认为您的问题并不是真正的技术问题,而是更多的正确方向。
推荐阅读
- node.js - 如何从快速服务器运行反应应用程序?
- r - 为什么微基准的第一次运行总是最慢的?
- c++ - 为什么修改超出范围的 std::string 不会导致运行时错误?
- azure - Azure ARM 错误“ResourceReferenceUsesWrongSubscriptionId”
- curl - telnet 后关闭 curl 连接
- r - pdp plotPartial 无法更改 zlim
- c# - 如何在 xaml 和 wpf 中将菜单项与 observableCollection 绑定?
- c++ - C++ 使用参数返回指针 - 不同指针类型之间的比较缺少强制转换
- graphql - 将 graphql 发送到 Restsharp 自动化中的 Post 正文
- powershell - Powershell 构建损坏的路径