Как я могу создать модель Django, которая реализует урок в расписании? - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь создать систему расписания для занятий в Джанго. У меня есть идея, которая мне все еще интересно, буду я работать или нет. Вот модель, представляющая каждый урок в классе; урок 1 (7:00 - 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)

Мне нужно создать 10 уроков, начиная с 7:00 и продолжительностью 50 минут каждый. Я хотел бы здесь ваши ценные советы. Спасибо.

1 Ответ

0 голосов
/ 27 июня 2018

Похоже, вы пытаетесь создать десять уроков объектов , каждый со своим собственным временем начала и окончания. В этом случае я бы настроил модель так:

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()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...