python “form.save(commit=True)”未保存到数据库

qv7cva1a  于 2023-01-29  发布在  Python
关注(0)|答案(1)|浏览(163)

我尝试使用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(),
            })

其他人有过这种问题吗?

pbgvytdp

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
我希望这会有帮助。

相关问题