我正在尝试为名为modelform_factory
的模型制作一个Book
,但是DateField
的表现却很奇怪。
class Book(models.Model):
name = models.CharField(max_length = 50)
date = models.DateField(max_length = 50)
我的views
中有一个函数返回以下内容:
modelform = modelformset_factory(Book, fields = (
'name',
'date',
),
can_delete=True,
widgets = {
'date': forms.DateInput(format='%d/%m/%Y'),
})
在我的template
中,此模型表单将使用日期选择器进行渲染:
$('.datepicker').datepicker({ format: 'dd/mm/yyyy' });
到目前为止,一切都很好,到目前为止一切正常。但是,当我再次将表单发布到视图中并保存modelformset时,dd/mm/yyyy
日期被错误地转换为yyyy-mm-dd
。
if request.method == 'POST':
formset = modelform(request.POST, request.FILES, queryset=Book.objects.filter(name=book))
if formset.is_valid():
formset.save() # This first deletes all instances that are checked for deletion
f = formset.save(commit=False) # This filters the formset to only include filled in forms
for form in f:
form.save()
return HttpResponse("success")
有人知道如何格式化dd/mm/yyyy
日期以正确输入我的数据库吗?
答案 0 :(得分:0)
您可能需要重新格式化日期以匹配字段的要求(yyyy-mm-dd)。使用dd / mm / yyyy格式的datapicker工具后,您需要通过jQuery更改值。
类似的东西
$("#dateField").on('change', function(){
var arr = $("#dateField").val().split("/");
var newDate = arr[2]+"-"+arr[1]+"-"+arr[0];
$("#dateField").val(newDate);
});
然后,您需要先在视图中将该字符串解析为日期类型,然后再使用parse_date保存该字符串:
from datetime import datetime
date = request.POST['dateField']
pDate= parse_date(date)
form.date = pDate
form.save()
在来源中: https://docs.djangoproject.com/en/2.1/_modules/django/db/models/fields/#DateField https://docs.djangoproject.com/en/2.1/ref/utils/#module-django.utils.dateparse