Импорт полей Django seriliazer в поля другого seriliazer
В настоящее время я работаю над сайтом для моих студентов, где они смогут бронировать некоторые предметы в классе. Я уже закончил с логикой и формой бронирования, так что двум студентам не разрешается бронировать один и тот же предмет одновременно. Я хотел бы создать для них таблицу, в которой будет отображаться название предмета, статус предмета на основе текущего времени, а также текущий владелец предмета в данный момент. Дело в том, что у меня есть три модели. Первая - Details, где есть вся информация о предметах, другая модель - Item, которая просто перечисляет название предмета, и последняя - Booking, которую я использую для формы и логики бронирования, эта модель создаст список всех бронирований, сделанных студентами.
class Details(models.Model):
item_name = models.CharField(max_length=50, editable=False)
item_id= models.IntegerField(editable=False)
Publish_date = models.DateField()
auther = models.CharField(max_length=20)
def __str__(self):
return self.item_name
class Items(models.Model):
ITEMS_CATEGORIES=(
('item-1', 'item-1'),
('item-2', 'item-2'),
('item-3', 'item-3'),
('item-4', 'item-4'),
('item-5', 'item-5'),
)
category = models.CharField(max_length=5, choices=ITEM_CATEGORIES)
def __str__(self):
return self.category
class Booking(models.Model):
user = models.CharField(max_length=50, editable=False)
note = models.CharField(max_length=300, default='SOMESTRING')
item = models.ForeignKey(Subsystem, on_delete=models.CASCADE)
check_in = models.DateTimeField()
check_out = models.DateTimeField()
def __str__(self):
return f' {self.item} is booked successfully by {self.user} from {self.check_in.strftime("%d-%b-%Y %H:%M")} to {self.check_out.strftime("%d-%b-%Y %H:%M")} for {self.note} '
Вот мой seriliazer, который показывает статус элемента на основе текущего времени.
class BookingSerializer(serializers.ModelSerializer):
status = serializers.SerializerMethodField()
class Meta:
model = Booking
fields = (
'item', 'check_in', 'check_out', 'user', 'status'
)
def get_status(self, obj):
return 'Booked' if obj.check_in <= timezone.now() < obj.check_out else 'Free'
Дело в том, что у меня есть еще один серилизатор под названием DetailSerilizer, который использует поля модели Detail. Я хотел бы импортировать поля из Bookingseriliazer в DetailSerilizer. Чтобы поле статуса отображалось там. Вот чего я пытаюсь достичь.
Итак, итоговая таблица, показанная на моей веб-странице для студента, имеет поля как из модели Detail, так и из модели бронирования и seriliazer.