学校时间表的Django模型?
我正在为每个房间创建一个学校时间表应用程序?这是我的模型。我有什么遗漏吗学校时间表的Django模型?,django,database,django-models,database-design,django-orm,Django,Database,Django Models,Database Design,Django Orm,我正在为每个房间创建一个学校时间表应用程序?这是我的模型。我有什么遗漏吗 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): re
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
班级建设(models.Model):
bid=models.CharField(最大长度=10,主键=True)
name=models.CharField(最大长度=255,唯一性=True)
类元:
排序=['bid']
定义(自我):
返回f'{self.bid}'
教室(模型.模型):
building=models.ForeignKey(building,on_delete=models.CASCADE,
相关_name='rooms')
编号=型号。正整数字段()
可用性=models.BooleanField(默认值=False)
power=models.BooleanField(默认值=False)
类元:
排序=[“建筑物”,“编号”]
共同唯一=[“建筑物”,“编号”]
定义(自我):
返回f'{self.building.bid}/{self.number}'
类引用(models.Model):
日期=型号。日期字段(“日期”)
开始时间=models.ForeignKey(时间,在删除时=models.CASCADE,相关的时间)
结束\u period=models.ForeignKey(period,on\u delete=models.CASCADE,related\u name='end\u at')
类元:
抽象=真
上课时间(models.Model):
start=models.TimeField()
end=models.TimeField()
对象=周期管理器()
类元:
排序=['start']
定义(自我):
返回f'{self.start}-{self.end}'
def检查时间(自身):
如果self.start
将有一个模型名称预订,从事件开始,允许学生注册使用房间。我想做一个时间表模型链接到一个房间模型,以提供上下文,为一个房间和类似于学校课时的课时模型呈现不同的星期时间表。有什么建议吗 我认为您可能需要重新思考您的实际模型和您试图实现的目标 看看你的模型,你似乎在为你要做的事情的不同方面创建模型,但模型之间似乎没有一致性 例如,一种看待它的方式如下:
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节课)
从数据的角度来看,这可能是您可以构建的最简单的模型(简单总是更好)。在显示可用内容方面,您可以在预订时(预订表)显示可用内容
我希望这能让你对如何解决这个问题有所了解,我在回答中没有创建模型,因为我认为你的问题实际上不是一个技术问题,而是一个正确方向上的问题。你面临的问题是什么?仅仅要求我们审查您的模型并给出建议并不是SO的目的,这会使您的问题变得过于模糊。请查看上的指导原则。我想创建一个房间模型的时间表模型链接,以提供用于呈现房间不同周时间表的上下文。