当我提交表单时,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()
答案 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对象,其中包含您输入的日期/时间。因此,您可以将其直接保存在模型中。