Импорт полей 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. Чтобы поле статуса отображалось там. Вот чего я пытаюсь достичь.

enter image description here

Итак, итоговая таблица, показанная на моей веб-странице для студента, имеет поля как из модели Detail, так и из модели бронирования и seriliazer.

Вернуться на верх