首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建实现课程表中课程的django模型?

如何创建实现课程表中课程的django模型?
EN

Stack Overflow用户
提问于 2018-06-27 23:12:27
回答 1查看 176关注 0票数 0

我正在尝试为Django的课堂创建一个时间表系统。我有一个想法,我仍然在想我会不会工作。这是代表课堂上每一课的模型;第一课(7:00 AM - 7:50),第二课(7:50- 8:40),等等。

代码语言:javascript
复制
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分钟。我很乐意在这里得到你宝贵的建议。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-06-28 00:40:43

听起来您想要做的是创建10个Lesson对象,每个对象都有自己的开始和结束时间。在这种情况下,我将像这样设置模型:

代码语言:javascript
复制
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)

然后,您可以创建一个单独的脚本来填充对象。

代码语言:javascript
复制
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()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51066248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档