从模板保存日期字段:错误"value has an invalid date format. It must be in YYYY-MM-DD format."



现在我必须以AAAA-MM-DD格式插入数据,如果我想插入%m/%d/%Y%m/%d/%y格式,我能做什么?谢谢,我是Django的新手。

我有插入数据的模板:

模板

<tr>
    <td>N_Prova</td>
    <td><input type="text" name="nprova"/></td>
</tr>
<tr>
    <td>Date Analysis</td>
    <td><input type="text" name="date_analysis" /></td>
</tr>

型号

class Analysis(models.Model):
    nprova = models.CharField(unique=True, max_length=20, null=False, blank=False)
    date_analysis = models.DateField(null=True)

查看

    def addanalisi(request):
        if 'save' in request.POST:
            print("save is in request post")
            newanal = analysis(nprova=nprova,data_analysis=date_analysis)
            newanal.save()
            print(nprova,data_analysis)
            return redirect('/listanalysis/')
        analysis = Analysis.objects.all()
        template = 'italgraniti/addanalysis.html'
        context_instance = RequestContext(request)
return render_to_response(template, {'form': form, 'analysis' : analysis}, context_instance)

您应该基于Model创建ModelForm。表单将自动将日期转换为Python datetime.date对象。

forms.py:

from .models import Analysis

class AnalysisForm(forms.ModelForm):
    date_analysis = form.DateField(input_formats=['%m/%d/%Y',
                                                '%m/%d/%y',])
    class Meta:
        model = Analysis

views.py:

from .forms import AnalysisForm

def addanalisi(request):  
    form = AnalysisForm(request.POST or None)
    if form.is_valid:
        form.save()
    return render(request, template, {'form':form})

docs_about_modelform和input_formats

您想要的是这个函数。

因此,在您看来,您希望拥有:

date = time.strptime(request.POST['date_analysis'], "%m/%d/%Y")   
newanal = analysis(nprova=request.POST['nprova'],data_analysis=date)
newanal.save()

相关内容

最新更新