Здравствуйте. По задумке мне в админке нужна функция, с помощью которой можно сделать что то типа школьного расписания уроков.
Выбираю день недели, класс, предмет, время. Но как правильно и лучше построить модель?
Сделать одну
class Days(models.Model):
class Meta:
verbose_name = u'День'
verbose_name_plural = u'Дни'
DAYS_CHOICES = (
('Понедельник', 'Понедельник'),
('Вторник', 'Вторник'),
('Среда', 'Среда'),
('Четверг', 'Четверг'),
('Пятница', 'Пятница'),
)
CLASS_CHOICES = (
('5-A', '5-A'),
('5-Б', '5-Б'),
('5-В', '5-В'),
('6-А', '6-А'),
('6-Б', '6-Б'),
)
LESSON_CHOICES = (
('Математика', 'Математика'),
('Химия', 'Химия'),
('Физика', 'Физика'),
('Труд', 'Труд'),
('Литература', 'Литература'),
)
time = models.TimeField(max_length=50, verbose_name='Время', null=True, blank=True)
days = models.CharField( max_length=50, choices=DAYS_CHOICES, verbose_name='Дни')
classies = models.CharField( max_length=50, choices=CLASS_CHOICES, verbose_name='Классы')
lessons = models.CharField(max_length=50, choices=LESSON_CHOICES, verbose_name='Предмет')
def __str__(self):
return self.days
или сделать четыре модели, и связать их, перевязать ключами "многиекомногим"
class Days(models.Model):
class Meta:
verbose_name = u'День'
verbose_name_plural = u'Дни'
DAYS_CHOICES = (
('Понедельник', 'Понедельник'),
('Вторник', 'Вторник'),
('Среда', 'Среда'),
('Четверг', 'Четверг'),
('Пятница', 'Пятница'),
)
days = models.CharField( max_length=50, choices=DAYS_CHOICES, verbose_name='Дни')
classies = models.CharField( max_length=50, choices=CLASS_CHOICES, verbose_name='Классы')
lessons = models.CharField(max_length=50, choices=LESSON_CHOICES, verbose_name='Предмет')
day = models.ManyToManyField('Classies', verbose_name='Класс')
lesson = models.ManyToManyField( 'Lessons', verbose_name='Предмет')
time = models.ManyToManyField('Time', verbose_name='Время')
def __str__(self):
return self.days
class Classies(models.Model):
class Meta:
verbose_name = u'Класс'
verbose_name_plural = u'Классы'
CLASS_CHOICES = (
('5-A', '5-A'),
('5-Б', '5-Б'),
('5-В', '5-В'),
('6-А', '6-А'),
('6-Б', '6-Б'),
)
classies = models.CharField( max_length=50, choices=CLASS_CHOICES, verbose_name='Классы')
def __str__(self):
return self.classies
class Lessons(models.Model):
class Meta:
verbose_name = u'Предмет'
verbose_name_plural = u'Предмети'
LESSON_CHOICES = (
('Математика', 'Математика'),
('Химия', 'Химия'),
('Физика', 'Физика'),
('Труд', 'Труд'),
('Литература', 'Литература'),
)
lessons = models.CharField(max_length=50, verbose_name='Предмет', choices=LESSON_CHOICES)
def str(self):
return self.lessons
class Time(models.Model):
class Meta:
verbose_name = u'Время'
verbose_name_plural = u'Время'
time1 = models.TimeField(max_length=50,verbose_name='Время', null=True, blank=True)
times = models.CharField(max_length=50, verbose_name='Время', null=True, blank=True)
def __str__(self):
return self.times
как лучше, с учетом что мне потом выбирать это во въюхе, с помощью селекта наверное.. ?
Спасибо