Модель связана с двумя другими моделями. Как мне получить доступ к свойствам этих двух других моделей в django

Я нахожусь в процессе создания системы управления бронированием номеров с использованием Django. Я столкнулся с проблемой доступа к моделям.

Вот моя модель комнаты

class Room(models.Model):
name = models.CharField(max_length=30)
date =  models.DateField()
defined_check_in_time =  models.IntegerField()
defined_check_out_time = models.IntegerField()
booked = models.BooleanField(default = False)

USERNAME_FIELD = 'name'

class Meta:
    ordering = ['date', 'defined_check_in_time']

def __str__(self):
    return self.name

def is_booked(self):
    return self.booked

def set_booked(self):
    self.booked = True

Вот моя модель бронирования

class Booking(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
room = models.ForeignKey(Room, on_delete=models.CASCADE)

def __str__(self):
    return f'{self.user} has booked {self.room} from {self.room.defined_check_in_time} to {self.room.defined_check_out_time} on {self.room.date}'

Я связал модель User и модель Room в модели Booking, используя внешний ключ, когда пользователь бронирует комнату. Модель User определена в другом файле. Я не включил код этой модели сюда.

Когда пользователь бронирует номер, соответствующий объект номера и объект пользователя связывается с объектом бронирования. Чтобы отобразить бронирования пользователя, мне нужно сделать запрос к модели Booking, используя объект User.

Вот, мой вопрос в том, как я могу получить доступ к атрибутам пользователя и объекта комнаты внутри объекта бронирования?

Чтобы получить доступ к информации внутри объекта бронирования, сначала нужно выбрать объект бронирования, какой бы способ идентификации бронирования вы ни выбрали... возможно, по id. Допустим, booking id=100

booking = Booking.objects.get(id=100)

Теперь для поиска информации по внешнему ключу можно просто . lookup.

booking_user = booking.user.username booking_room = booking.room.name

или найти любые заказы на забронированные номера:

booked_rooms = Booking.objects.filter(room.booked == True)

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