Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class TimetableSerializer(serializers.ModelSerializer):
- group = GroupSerializer()
- day = DaySerializer()
- name_of_class = ClassSerializer()
- cabinet = CabinetSerializer()
- class Meta:
- model = Timetable
- fields = ['id', 'number_of_class', 'group', 'day', 'name_of_class', 'cabinet']
- # Объект создается. Сделать проверку существование get() полей. Сделайть чтобы при занятии кабинета
- # в какой либо из дней нельзя было его на этот же день поставить
- def create(self, validated_data):
- group = Group.objects.get(number=validated_data['group']['number'])
- day = validated_data.pop('day')
- day = Day.objects.get_or_create(day=day['day'], day_of_week=day['day_of_week'])
- cabinet = Cabinet.objects.get(number=validated_data['cabinet']['number'])
- name_of_class = Class.objects.get(name=validated_data['name_of_class']['name'])
- number_of_class = validated_data['number_of_class']
- timetable = Timetable.objects.create(group=group, day=day[0], cabinet=cabinet, name_of_class=name_of_class, number_of_class=number_of_class)
- return timetable
- _______________________________________________________________________________________________________________________
- Модели
- class Day(models.Model):
- '''Model with date and day of week'''
- day = models.DateField()
- day_of_week = models.CharField(max_length=10)
- class Meta:
- verbose_name = 'День'
- verbose_name_plural = 'Дни'
- def __str__(self):
- return f'{self.day_of_week}-{self.day}'
- class Group(models.Model):
- '''Model with number of group'''
- number = models.CharField(max_length=6)
- slug = models.SlugField(max_length=10, default='empty')
- class Meta:
- verbose_name='Группа'
- verbose_name_plural='Группы'
- def __str__(self):
- return f'Группа {self.number}'
- def save(self, *args, **kwargs):
- self.slug = slugify(self.number)
- super(Group, self).save(*args, **kwargs)
- class Cabinet(models.Model):
- '''Model with cabinets and their status'''
- number = models.CharField(max_length=5)
- is_free = models.BooleanField(default=True)
- class Meta:
- verbose_name='Кабинет'
- verbose_name_plural='Кабинеты'
- def __str__(self):
- return f'Кабинет {self.number}'
- class Class(models.Model):
- '''Model with name of academic classes'''
- name = models.CharField(max_length=25)
- class Meta:
- verbose_name='Пара'
- verbose_name_plural='Пары'
- def __str__(self):
- return self.name
- class Timetable(models.Model):
- '''Model integraated all other models'''
- day = models.ForeignKey(Day, related_name='timetables', on_delete=models.CASCADE)
- group = models.ForeignKey(Group, related_name='timetables', on_delete=models.CASCADE)
- cabinet = models.ForeignKey(Cabinet, related_name='timetables', on_delete=models.CASCADE)
- name_of_class = models.ForeignKey(Class, related_name='timetables', on_delete=models.CASCADE)
- number_of_class = models.PositiveSmallIntegerField()
- class Meta:
- verbose_name='Расписание'
- verbose_name_plural='Расписание'
- def __str__(self):
- return f'{self.day.day} - {self.group.number} - {self.name_of_class.name}'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement