Я новичок в Django и в настоящее время работаю в системе бронирования хостелов. Я однако испытываю некоторые ошибки. Во-первых, я хочу, чтобы поле is_reserved в модели комнаты было True при резервировании, я пробовал разные способы, но у меня это не работает. Во-вторых, я получаю сообщение об ошибке, когда пользователь пытается забронировать номер дважды. Можно ли как-нибудь решить эту ошибку: Вот мой код и отображаемые ошибки:
def RoomBookingView(request,pk):
if request.method == 'POST':
if pk:
room_id = Room.objects.get(pk = pk)
student_id = request.user
reservation = Reservation(
room_id = room_id.id,
student_id = student_id.id,
)
reservation.save()
room_id.is_reserved = True
return redirect('confirm')
return render(request,'room-detail.html',{})
class Reservation(models.Model):
student = models.OneToOneField(User,on_delete=models.CASCADE)
room = models.ForeignKey(Room, on_delete = models.CASCADE)
start_date = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name = 'Reservation'
verbose_name_plural = 'Reservations'
def RoomBookingView(request,pk):
if request.method == 'POST':
if pk:
room_id = Room.objects.get(pk = pk)
student_id = request.user
reservation = Reservation(
room_id = room_id.id,
student_id = student_id.id,
)
reservation.save()
room_id.is_reserved = True
return redirect('confirm')
return render(request,'room-detail.html',{})
class Room(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(max_length=200,null=True,blank=True,unique=True)
price = models.IntegerField()
hostel = models.ForeignKey(Hostel,on_delete=models.CASCADE,null=True)
number_of_beds = models.IntegerField()
room_thumbnail = models.ImageField(null=True)
resized_thumbnail = ImageSpecField(
processors=[ResizeToFill(620, 430)],
format='JPEG',
options={'quality': 60})
room_type = models.ForeignKey(Category,on_delete=models.CASCADE)
room_number = models.IntegerField()
is_reserved = models.BooleanField(default=False)
description = models.TextField()
def get_absolute_url(self):
return reverse('room_detail', args =[ str( self. id)])
def save(self):
if not self.slug:
self.slug = slugify(self.name)
return super(Room,self).save()
def __str__(self):
return self.name