如何使用Django表单保存日期/时间

时间:2014-11-18 01:38:09

标签: django

当我提交表单时,POST请求数据显示为ridetime_year,ridetime_day和ridetime_month。

如何从表单中捕获日期/时间并将其保存到数据库?感谢

Forms.py

class AddRideSpot(forms.Form):

    ridetime = forms.DateTimeField(widget=SelectDateWidget,initial=datetime.date.today())

    def clean(self):
        cleaned_data = self.cleaned_data

        ridetime = cleaned_data.get("ridetime")
        return cleaned_data

views.py

def add_point(request):

    if request.method == 'POST':
        form = forms.AddRideSpot(request.POST)
        if form.is_valid():

            cd = form.cleaned_data

            new_ride = models.Ride()

            new_ride.ridetime = cd['ridetime']

            new_ride.save()

1 个答案:

答案 0 :(得分:2)

好吧,当您提交表单时,您会在ridetime中获得cleaned_data的{​​{1}}作为datetime对象的值,该对象看起来像2014-11-18 00:00:00。如果模型字段为DateTimeField,则可以将该对象直接保存到模型中。在views.py中保存ridetime值的方法应该可以正常工作。

因此,使用SelectDateWidget只会告诉您提交表单的日期。如果您想保存日期时间,可以尝试这样(使用DateTimeInput):

ridetime = forms.DateTimeField(input_formats=['%d/%m/%Y %H:%M:%S'], widget=forms.DateTimeInput(format='%d/%m/%Y %H:%M:%S'))

它将呈现一个TextField,您需要以上述格式输入日期(例如:18/11/2014 12:12:00)。您可以使用DateTimePicker之类的JQuery在该文本字段上选择日期时间。 DateTimeInput小部件将为您提供一个datetime对象,其中包含您输入的日期/时间。因此,您可以将其直接保存在模型中。