繁体   English   中英

'form.save(commit=True)' 不保存到数据库

[英]'form.save(commit=True)' not saving to database

我正在尝试使用 ModelForm 在我的数据库中创建一个新的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

我希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM