Я новичок в Django, я пытаюсь создать бронирование общежития с чередующимися платежами. У меня есть модель комнаты и бронирование следующим образом.
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 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)])
У меня также есть подробный вид комнаты и вид сбора, где я хочу, чтобы сумма заряда на полосе была динамической c в зависимости от цены комнаты. Может ли кто-нибудь помочь мне решить эту проблему?
<!-- begin snippet: js hide: false console: true babel: false -->
def BookingConfirmation(request):
if request.method == 'POST':
rooms = Room.objects.all()
amount = rooms.price
charge = stripe.Charge.create(
currency='usd',
amount = amount,
description='A Django charge',
source=request.POST['stripeToken']
)
return render(request,'booking-confirm.html',{})
def RoomBookingView(request,pk):
publishkey = settings.STRIPE_PUBLISHABLE_KEY
if request.method == 'POST':
if pk:
room_id = Room.objects.get(pk = pk)
student_id = request.user
room_id.is_reserved = True,
reservation = Reservation(
room_id = room_id.id,
student_id = student_id.id,
)
reservation.save()
try:
room = Room.objects.get(id=pk)
room.is_reserved = True
amount = room_id.price
room.save()
except BaseException:
pass
return redirect('confirm')
context = {
'STRIPE_PUBLISHABLE_KEY' : publishkey,
}
return render(request,'room-detail.html',context)