我正在尝试为Django创建课堂时间表系统。我有一个想法,我仍然想知道我是否会工作。这是代表课堂上每节课的模型;第1课(7:00 AM-7:50),第2课(7:50-8:40)等。
class Lesson(models.Model):
start = models.TimeField()
end = models.TimeField()
lesson = models.PositiveSmallIntegerField(choices=[(i, i) for i in range(1, 10)], primary_key=True)
class Meta:
verbose_name = 'lesson'
ordering = ['lesson']
def __str__(self):
return "{}".format(self.lesson)
我在这里需要从上午7:00开始持续10课,每节课持续50分钟。我很乐意在这里提供您宝贵的建议。谢谢。
答案 0 :(得分:0)
听起来您要尝试创建10个课程对象,每个对象都有自己的开始和结束时间。在这种情况下,我将像这样建立模型:
class Lesson(models.Model):
start = models.TimeField()
end = models.TimeField()
title = models.CharField(max_length=30, blank=True, null=True)
def __str__(self):
start_time = self.start.strftime("%H:%M") # '07:00'
end_time = self.end.strftime("%H:%M") # '07:50'
return "{} ({} - {})".format(self.title, start_time, end_time)
# 'Course 1 (07:00 - 07:50)
然后,您可以创建一个单独的脚本来填充对象。
courses = ['Course 1', 'Course 2', ..., 'Course 10']
start_time = datetime.time(7,0) # 07:00
delta = datetime.timedelta(minutes=50)
for course in courses:
date_time = datetime.datetime.combine(datetime.date.today(), start_time)
time_diff = date_time + delta
end_time = time_diff.time()
lesson = Lesson(start=start_time, end=end_time, title=course)
lesson.save()
start_time = end_time
这将在您的数据库中创建10条课记录,每条记录连续50分钟。
如果您希望用户从下拉菜单中选择课程,则仍然可以使用Lesson.objects.values('title').distinct()