Я новичок в Django Rest Framework и занимаюсь этим вопросом, но я не могу понять его, может ли кто-нибудь помочь мне решить его?
Резюме: Расширение проекта Django с помощью Django REST Framework для простого готового приложения бронирования, которое имеет: - Объект листинга с двумя типами - booking_engine.
модели :
У апартаментов (single_unit) есть информация о бронировании (цена), непосредственно связанная с ним.
Hotels(multi-unit) имеют информацию о бронировании (цена), связанную с каждым из их HotelRoomTypes. - фильтрация объявлений и возврат JSON ответа с доступными единицами на основе критериев поиска. - должна обрабатывать большой набор данных объявлений. Имеется предварительно созданная структура для отелей/апартаментов (может быть изменена или расширена). База данных предварительно заполнена информацией - db.sqlite3. суперпользователь имя пользователя: admin пароль: admin Мы должны иметь возможность блокировать дни (бронировать) для каждой квартиры или номера в отеле. Должна быть создана новая модель для заблокированных (зарезервированных) дней НОВАЯ конечная точка, где мы будем получать доступные апартаменты и отели на основе: доступные дни (диапазон дат, например: "с 2021-12-09 по 2021-12-12") - Апартаменты не должны иметь ни одного заблокированного дня внутри диапазона - В отеле должен быть доступен хотя бы 1 номер из любого типа HotelRoomType. max_price (100): Цена квартиры должна быть ниже max_price. Отель должен иметь хотя бы 1 номер без заблокированных дней в диапазоне с ценой ниже max_price. Возвращенные объекты должны быть отсортированы от самой низкой до самой высокой цены. Отели должны отображать цену самого дешевого HotelRoomType с доступным HotelRoom. Начальная настройка проекта git clone https://bitbucket.org/staykeepersdev/bookingengine.git. python -m venv venv pip install -r requirements.txt python manage.py runserver Пример тестового случая: Для покрытия большего количества тестовых примеров нам понадобится как минимум один отель с 3 типами номеров: Первый с ценой=50 (ниже max_price) с заблокированным днем внутри критерия поиска для всех номеров (может быть 1 номер). Второй с ценой=60 (ниже max_price) с заблокированным днем внутри критерия поиска для одного из нескольких номеров Третий с ценой 200 (выше max_price)
Пример запроса:
http://localhost:8000/api/v1/units/?max_price=100&check_in=2021-12-09&check_out=2021-12-12
Response example:
{
"items": [
{
"listing_type": "Apartment",
"title": "Luxurious Studio",
"country": "UK",
"city": "London",
"price": "40"
},
{
"listing_type": "Hotel",
"title": "Hotel Lux 3***",
"country": "BG",
"city": "Sofia",
"price": "60" # This the price of the first Hotel Room Type with a Room without blocked days in the range
},
{
"listing_type": "Apartment",
"title": "Excellent 2 Bed Apartment Near Tower Bridge",
"country": "UK",
"city": "London",
"price": "90"
},
]
}