我正在尝试为Django的课堂创建一个时间表系统。我有一个想法,我仍然在想我会不会工作。这是代表课堂上每一课的模型;第一课(7:00 AM - 7:50),第二课(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)我这里需要的是创建10节课,从早上7点开始,每节课持续50分钟。我很乐意在这里得到你宝贵的建议。谢谢。
发布于 2018-06-28 00:40:43
听起来您想要做的是创建10个Lesson对象,每个对象都有自己的开始和结束时间。在这种情况下,我将像这样设置模型:
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()
https://stackoverflow.com/questions/51066248
复制相似问题