html输入标记中的Python / Django日期字段

时间:2016-08-09 12:36:26

标签: python html django

我正在尝试在输入字段中显示日期:

<tr><td>Date of Birth</td><td><input type="date" name="DOB" value="{{m.dob|date:"d/m/Y"}}" required=True></td></tr>

其中m.dob在模型中定义为:

dob = models.DateField('Date of Birth', blank=True, null=True)

HTML输入标记在加载页面时将日期显示为dd / mm / yyyy,但我可以看到该字段已获取分配的值。如何让它正确显示?

感谢您的帮助

4 个答案:

答案 0 :(得分:4)

问题是value="{{m.dob|date:'d/m/Y'}}",必须指定为value="{{m.dob|date:'Y-m-d'}}"

答案 1 :(得分:1)

老兄,你的问题不明确。但就目前而言,我假设你是Django的新手。

您的数据库值未填充在模板中。为了显示该值,您必须执行两个步骤:

  • 首先查询模型对象
  • 通过Django视图中的附加上下文字典传递它。
from django.views.generic import View
from django.shortcuts import render

class Home(View):
    template_name = "home.html"
    def __init__(self, **kwargs):
        pass

    def get(self, request):
        # Fetch your object here. ID or any other 
        myObj = MyModel.objects.get(id=1)
        # Third argument is the conext dictionary
        return render(request,self.template_name,{'myObj': myObj})

现在只需使用以下语法在模板中使用myObj

<tr><td>Date of Birth</td><td><input type="date" name="DOB" value="{{myObj.dob|date:"d/m/Y"}}" required=True></td></tr>

此代码位于 home.html

答案 2 :(得分:1)

如果使用ModelForm并将该表单对象传递给模板,那么它应该是

value="{{m.dob.value|date:'Y-m-d'}}"

答案 3 :(得分:0)

你可以这样使用default

date = models.DateField(_("Date"), default="{{"+datetime.date.today+"}}")