【问题标题】:Save datefield from template: error "value has an invalid date format. It must be in YYYY-MM-DD format."从模板保存日期字段:错误“值的日期格式无效。它必须是 YYYY-MM-DD 格式。”
【发布时间】:2016-01-11 14:56:42
【问题描述】:

现在我必须以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)

【问题讨论】:

    标签: django date datetime input format


    【解决方案1】:

    您应该根据您的Model 创建ModelForm。该表单将automatically convert 日期转换为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_modelforminput_formats

    【讨论】:

      【解决方案2】:

      你要找的是this函数。

      所以在您看来,您希望拥有:

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

      【讨论】:

      • 好的,现在期待正确的格式,但它返回“异常值:预期的字符串或类似字节的对象”。这是什么意思?
      猜你喜欢
      • 2023-02-23
      • 2015-02-26
      • 2019-01-05
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 2016-01-02
      相关资源
      最近更新 更多