I'm creating a booking appin django and I'm a bit new on this, when I try to book a room I keep getting the following error:
Booking( ) got an unexpected keyword argument 'chek_in'
I'm following the code on the following git address, but I keep making the same mistake no matter how many times I keep writing the code:
https://github.com/Darshan4114/Django_HMS
I appreciate any help you can bring. Below my codes:
Availability.py
import datetime
from hotel.models import Room, Booking
def check_availability(room, check_in, check_out):
avail_list = []
booking_list = Booking.objects.filter(room=room)
for booking in booking_list:
if check_in > booking.check_out or booking.check_out < check_in:
avail_list.append(True)
else:
avail_list.append(False)
return all(avail_list)
Views
from django.shortcuts import render, HttpResponse
from django.views.generic import ListView, FormView, View
from .models import Room, Booking
from .forms import AvailabilityForm
from hotel.booking_functions.availability import check_availability
class RoomListView(ListView):
model=Room
class BookingList(ListView):
model=Booking
class RoomDetailView(View):
def get(self, request, *args, **kwargs):
category = self.kwargs.get('category', None)
form = AvailabilityForm()
room_list = Room.objects.filter(category=category)
if len(room_list)>0:
room = room_list[0]
room_category = dict(room.ROOM_CATEGORIES).get(room.category, None)
context = {
'room_category': room_category,
'form': form,
}
return render(request, 'room_detail_view.html', context)
else:
return HttpResponse ('Category does not exist')
def post(self, request, *args, **kwargs):
category = self.kwargs.get('category', None)
room_list = Room.objects.filter(category=category)
form = AvailabilityForm(request.POST)
if form.is_valid():
data = form.cleaned_data
available_rooms=[]
for room in room_list:
if check_availability(room, data['check_in'], data['check_out']):
available_rooms.append(room)
if len(available_rooms) > 0:
room = available_rooms[0]
booking = Booking.objects.create(
user=self.request.user,
room=room,
chek_in=data['check_in'],
check_out=data['check_out'])
booking.save()
return HttpResponse(booking)
else:
return HttpResponse('No rooms available on this category. Please try another one')
class BookingView(FormView):
form_class = AvailabilityForm
template_name = 'availability_form.html'
def form_valid(self, form):
data = form.cleaned_data
room_list = Room.objects.filter(category=data['room_category'])
available_rooms=[]
for room in room_list:
if check_availability(room, data['check_in'], data['check_out']):
available_rooms.append(room)
if len(available_rooms) > 0:
room = available_rooms[0]
booking = Booking.objects.create(
user=self.request.user,
room=room,
chek_in=data['check_in'],
check_out=data['check_out']
)
booking.save()
return HttpResponse(booking)
else:
return HttpResponse('No rooms available on this category. Please try another one')
Thanks in advance
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…