'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
для реализации этого.
Надеюсь, это будет полезно.