Настройка формы онлайн-бронирования, получение этой ошибки - TypeError at /bookings/ 'OnlineForm' object is not callable
Может ли кто-нибудь помочь. В настоящее время я работаю над проектом, в котором я пытаюсь создать веб-сайт для вымышленного ресторана, включая форму онлайн бронирования. Я получаю следующее сообщение об ошибке: TypeError at /bookings/ Объект 'OnlineForm' не может быть вызван
Я просмотрел несколько видео и прочитал документацию по Django, но так и не понял, что я делаю не так. Я новичок в Django, поэтому для меня это все обучение. Любой совет, который вы можете дать, будет очень признателен. Спасибо заранее
Вот мой код:
view.py:
class BookingForm(FormView):
form_class = OnlineForm()
args = {}
def booking_view(self, request):
if request.method == 'POST':
form = OnlineForm(request.POST)
return render(request, 'bookings.html')
models.py
OCCASION_CHOICE = (
('Birthday', 'BIRTHDAY'),
('Anniversary', 'ANNIVERSARY'),
('Graduation', 'GRADUATION'),
('Communion', 'COMMUNION'),
('Confirmation', 'CONFIRMATION'),
('Christening', 'CHRISTENING'),
('Date Night', 'DATE NIGHT'),
)
class Booking(models.Model):
name = models.CharField(max_length=50)
email_address = models.EmailField()
phone = models.IntegerField()
number_of_people = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(10)],default='1', help_text='For parties of more than 10, please call us on 021 4569 782')
date = models.DateField()
time = models.TimeField()
occasion = models.CharField(max_length=100, choices=OCCASION_CHOICE, default='Birthday')
def __str__(self):
return self.name
forms.py:
from django.forms import ModelForm
from .models import Booking
class OnlineForm(ModelForm):
class Meta:
model = Booking
fields = '__all__'
urls.py:
from . import views
from .views import BookingForm
from django.urls import path
app_name = 'bookingsystem'
urlpatterns = [
path('', views.Home.as_view(), name='home'),
path('bookings/', BookingForm.as_view(), name='bookings'),
path('menus/', views.Menus.as_view(), name='menus'),
path('edit_bookings', views.editBooking.as_view(), name='edit_bookings'),
]
bookings.html:
{% extends "base.html" %}
{% block content %}
<form method="POST">
{% csrf_token %}
{{form}}
<button id="submit-button" class="btn btn-success">Book Now</button>
</form>
{%endblock%}
Согласно описанию django, в FormView нет возможности определить собственный метод POST. Перепишите ваше представление на
class BookingForm(FormView):
template_name = 'bookings.html'
form_class = OnlineForm
решит эту проблему. Хотя вам нужно будет добавить метод form_valid для определения действий, выполняемых при отправке формы с валидными данными.