'form.save(commit=True)' не сохраняется в базе данных

Я пытаюсь использовать ModelForm для создания новой модели в моей базе данных. Дело в том, что она не сохраняется, когда я вызываю form.save(commit=True).

Я использую Elastic Beanstalk (бесплатный уровень) для размещения своего сайта. Мне кажется, что это как-то связано с проблемой.

Это мой forms.py:

from datetime import date
from .models import Itinerary

class CreateItinerary(forms.ModelForm):
    class Meta:
        model = Itinerary
        exclude = ["sights"]
    
    destination = forms.CharField(max_length=100)
    start = forms.DateField(widget=forms.NumberInput(attrs={'type': 'date'}), initial=date.today)
    end = forms.DateField(widget=forms.NumberInput(attrs={'type': 'date'}))

class FindPlaces(forms.Form):
    types = ((1, "restaurants"), (2, "attractions"), (3, "parks"), 
            (4, "national parks"), (5, "clothing stores"), (6, "malls"), 
            (7, "department stores"), (8, "stadiums"))

    place_type = forms.ChoiceField(choices=types)

Это мой views.py файл:

from django.views import generic
from .models import *
from .forms import *

class createItinerary(generic.TemplateView):
    template = "itineraries/create.html"

    def get(self, request, *args, **kwargs):
        return render(request, self.template, 
            {
                "form" : CreateItinerary(request.POST, request.FILES),
            })
    
    def post(self, request, *args, **kwargs):
        form = CreateItinerary(request.POST)

        if form.is_valid():
            new = form.save(commit=True)

            return redirect("/sights/")

        else:
            form = CreateItinerary

        return render(request, self.template, 
            {
                "form" : form,
            })

def plan_redirect(request, id):
    return redirect("/plan/%s" % id, request)

class plan(generic.TemplateView):
    find_places_form_class = FindPlaces
    template = "itineraries\plan.html"

    def get(self, request, id, *args, **kwargs):
        object = get_object_or_404(Itinerary, pk=id)

        return render(request, self.template, 
            {
                "find_places_form" : self.find_places_form_class(),
                "object" : object,
                "trip_length" : object.get_trip_length(),
            })

У кого-нибудь еще была такая ошибка?

В generic.TemplateView у вас есть только GET метод для использования. Попробуйте использовать generic.FormView для реализации этого.

Подробнее: https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-editing/#django.views.generic.edit.FormView

Надеюсь, это будет полезно.

Вернуться на верх