Django 查询日期和时间字段并在模板中呈现

Django 查询日期和时间字段并在模板中呈现,django,django-models,django-views,Django,Django Models,Django Views,views.py def new_report(request): user = request.user reports = Report.objects.filter(user=user) today = datetime.datetime.today() reports_today = reports.filter(created_date_time__year=today.year, created_date_time__month=today.mont

views.py

def new_report(request):
    user = request.user
    reports = Report.objects.filter(user=user)
    today = datetime.datetime.today()

    reports_today = reports.filter(created_date_time__year=today.year, created_date_time__month=today.month, created_date_time__day=today.day)
    num_today = len(reports_today) + 1
    num_today = str(num_today).zfill(3)
    reportform = ReportForm()
    if request.method == 'POST':
        reportform = ReportForm(request.POST)
        if reportform.is_valid():
            report = reportform.save(commit=False)
            report.user = user
            report.created_date_time = today
    return render(request, 'incident/new_report.html',
                  {
                   'newreport_menu': True,
                   'reports': reports,
                   'reportform':ReportForm,
                 })
models.py

class Report(models.Model):
    user = models.ForeignKey(User, null=False)
    incident_number = models.CharField('Incident Number', max_length=100)
    device_id = models.CharField('Device Id', max_length=100)
    app_uuid = models.CharField('Unique App Id', max_length=100)
    created_date_time = models.DateTimeField('Created',auto_now=True)
模板是

{{ reports.created_date_time|date:"j M Y g:i A" }}
从数据库中获取创建的日期时间,并在2011年1月20日下午2:26转换为此格式以显示在模板中


从数据库中查询创建的日期时间并显示到模板中。我没有在代码中得到任何错误,我认为某些逻辑有问题,所以它不会发生

报告
变量是在模板中访问的,因为它是单个报告对象,但它是报告对象的列表

要访问模板列表中的第一项,请使用以下语法:

{{ reports.0.created_date_time|date:"j M Y g:i A" }}
现在,以您提到的格式打印日期的最简单方法是:

{{ reports.0.created_date_time|date:"j M Y" }} at {{ reports.0.created_date_time|date:"g:i A" }}
但是,在我看来,更好的方法是创建,它将打印所需的格式

您的应用程序/templatetags/format\u dates.py

from django.utils.dateformat import format
from django.template.base import Library

register = Library()

@register.filter(expects_localtime=True, is_safe=False)
def format_date(value):
    if not value:
        return u''
    try:
        return u"%s at %s" % (format(value, 'j M Y'), format(value, 'g:i A'))
    except AttributeError:
        return u''
然后在模板中:

{% load format_dates %}

...

{{ reports.0.created_date_time|format_date }}

看起来像是
报表
变量是报表对象的列表,但您可以在模板中访问它,因为它是单个报表对象。试试这个:
{reports.0.created_date_time|date:“jm Y g:i A”}
ya,它显示的是日期和时间,但是以这种格式,2013年5月4日10:00 PM,所以我需要它是2013年5月4日10:00 PM格式,即日期和时间之间的字符串“at”应该包括,如何做到这一点。