Django 查询日期和时间字段并在模板中呈现
views.pyDjango 查询日期和时间字段并在模板中呈现,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
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”应该包括,如何做到这一点。