我尝试使用ModelForm
在我的数据库中创建一个新的模型,问题是,当我调用form.save(commit=True)
时,它没有将它保存到那里。
我正在使用弹性豆茎(免费层)来托管我的网站。我觉得这与问题有关。
这是我的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(),
})
其他人有过这种问题吗?
1条答案
按热度按时间pbgvytdp1#
在
generic.TemplateView
中,您只能使用GET
方法。请尝试使用generic.FormView
来实现此方法。更多详情:www.example.comhttps://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-editing/#django.views.generic.edit.FormView
我希望这会有帮助。