Запрос базы данных и удаление вариантов полей символов на основе того, что есть в базе данных
Я создал форму бронирования с помощью Django forms. Для выбора времени у меня есть ряд вариантов. Однако я хочу отображать эти варианты в форме, только если они еще не существуют для этих данных и времени.
Вот мой models.py:
from django.db import models
from django.contrib.auth.models import User
from django.core import validators
import datetime
TIME_CHOICES = (
('12:00:00', '12pm'),
('12:15:00', '12:15pm'),
('12:30:00', '12:30pm'),
('12:45:00', '12:45pm'),
('13:00:00', '1pm'),
('13:15:00', '1:15pm'),
('13:30:00', '1:30pm'),
('13:45:00', '1:45pm'),
('14:00:00', '2pm'),
('14:15:00', '2:15pm'),
('14:30:00', '2:30pm'),
('14:45:00', '2:45pm'),
('15:00:00', '3pm'),
('15:15:00', '3:15pm'),
('15:30:00', '3:30pm'),
('15:45:00', '3:45pm'),
('16:00:00', '4pm'),
('16:15:00', '4:15pm'),
('16:30:00', '4:30pm'),
('16:45:00', '4:45pm'),
('17:00:00', '5pm'),
('17:15:00', '5:15pm'),
('17:30:00', '5:30pm'),
('17:45:00', '5:45pm'),
('18:00:00', '6pm'),
('18:15:00', '6:15pm'),
('18:30:00', '6:30pm'),
('18:45:00', '6:45pm'),
('19:00:00', '7pm'),
('19:15:00', '7:15pm'),
('19:30:00', '7:30pm'),
('19:45:00', '7:45pm'),
('20:00:00', '8pm'),
('20:15:00', '8:15pm'),
('20:30:00', '8:30pm'),
('20:45:00', '8:45pm'),
('21:00:00', '9pm'),
('21:15:00', '9:15pm'),
('21:30:00', '9:30pm'),
('21:45:00', '9:45pm'),
('22:00:00', '10pm'),
('22:15:00', '10:15pm'),
('22:30:00', '10:30pm'),
('22:45:00', '10:45pm'),
)
class Booking(models.Model):
user = models.ForeignKey(
User, on_delete=models.CASCADE, null=True, blank=True
)
first_name = models.CharField(max_length=25, null=False, blank=False)
last_name = models.CharField(max_length=25, null=False, blank=False)
email_address = models.EmailField(default="email@email.com")
phone_number = models.IntegerField()
date_of_booking = models.DateField(default=datetime.date.today())
time_of_booking = models.CharField(
max_length=10, choices=TIME_CHOICES, default=""
)
number_of_people = models.IntegerField()
special_requests = models.CharField(max_length=200)
def __str__(self): # code adapted from Models Part 2 FST walkthrough
return self.first_name + " " + self.last_name + " | " \
+ str(self.date_of_booking) + " at " + str(self.time_of_booking)
Вот мой views.py fucntion:
def make_booking(request):
if request.method == 'POST':
form = BookingForm(request.POST)
if form.is_valid():
form.save()
print('form saved')
return redirect(get_bookings)
else:
print('broken')
form = BookingForm()
context = {
'form': form
}
return render(request, 'booking/make_booking.html', context)
Как написать функцию для удаления из выпадающего списка дат/времени, уже отправленных в базу данных.
введите здесь описание изображения
Я могу найти только информацию, которая говорит мне, как записать текущую сессию, но не как сделать запрос к базе данных.
Почему бы не создать модель выбора времени вместо того, чтобы жестко закодировать ее в models.py. Тогда вы сможете использовать что-то вроде:
TimeModel.objects.filter(time=form.time_of_booking).delete()