[英]Django model DateField format in modelformset_factory
I'm trying to make a modelform_factory
for my model named Book
but the DateField
is behaving strangely. 我正在尝试为名为
Book
模型制作一个modelform_factory
,但DateField
的行为异常。
class Book(models.Model):
name = models.CharField(max_length = 50)
date = models.DateField(max_length = 50)
I have a function in my views
that returns this: 我的
views
中有一个函数返回以下内容:
modelform = modelformset_factory(Book, fields = (
'name',
'date',
),
can_delete=True,
widgets = {
'date': forms.DateInput(format='%d/%m/%Y'),
})
In my template
this modelform will render with a datepicker: 在我的
template
此modelform将使用日期选择器呈现:
$('.datepicker').datepicker({ format: 'dd/mm/yyyy' });
So far so good, and everything is working as expected to this point. 到目前为止,一切都很好,到目前为止,一切都按预期进行。 But when I post my form to my view again, and save the modelformset, the
dd/mm/yyyy
date is wrongly converted to yyyy-mm-dd
. 但是,当我再次将表单发布到视图中并保存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")
Does someone has any clue how I can format this dd/mm/yyyy
date to correctly enter my database? 有人知道如何格式化该
dd/mm/yyyy
日期以正确输入我的数据库吗?
You probably need to reformat the date to match what the field requires (yyyy-mm-dd). 您可能需要重新格式化日期以匹配字段的要求(yyyy-mm-dd)。 You'll need to change the value via jQuery after using the datapicker tool which is using the dd/mm/yyyy format.
使用dd / mm / yyyy格式的datapicker工具后,您需要通过jQuery更改值。
Somthing like: 有点像:
$("#dateField").on('change', function(){
var arr = $("#dateField").val().split("/");
var newDate = arr[2]+"-"+arr[1]+"-"+arr[0];
$("#dateField").val(newDate);
});
Then, you'll need to parse that string to a date type in your view before saving it with parse_date: 然后,您需要先在视图中将该字符串解析为日期类型,然后再使用parse_date保存该字符串:
from datetime import datetime
date = request.POST['dateField']
pDate= parse_date(date)
form.date = pDate
form.save()
In the source: 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 在源中: https : //docs.djangoproject.com/zh-CN/2.1/_modules/django/db/models/fields/#DateField https://docs.djangoproject.com/zh-CN/2.1/ref/utils/#module -django.utils.dateparse
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.