djangoのfacebook/twitterで使用されている時刻/日付の形式を表示するにはadmin?django adminに人間の時間(x日前、または今)を表示するには?
from django.db import models
from datetime import datetime
class Course(models.Model):
date = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=255)
description = models.TextField()
def get_date(self):
time = datetime.now()
if self.date.day == time.day:
return str(time.hour - self.date.hour) + " hours ago"
else:
if self.month == time.month:
return str(time.day - self.date.day) + " days ago"
return self.date
def __str__(self):
return self.title
Admin.py
from django.contrib import admin
from .models import Course
@admin.register(Course)
class CourseAdmin(admin.ModelAdmin):
list_display = ('title', 'description', 'get_date',)
は、日付/時刻を読み込むが、静止画像に示されるようにエラーを取得する組み合わせの数を試してみました。私はget_dateを使用している場合
:人間の時間内のcreated_atとupdated_atのを表示する
AttributeError at /admin/courses/course/
'Course' object has no attribute 'month'
Request Method: GET
Request URL: http://localhost:8000/admin/courses/course/
Django Version: 1.10.5
Exception Type: AttributeError
Exception Value:
'Course' object has no attribute 'month'
Exception Location: /courses/models.py in get_date, line 17
期待される結果:私は次のエラーを取得します。 は
- 2日前
- が今
- 数分前
期待される結果を表示するには、次の2日前、または3時間前。またはそれより良いことは、数時間前です。
class Example(models.Model):
date = models.DateTimeField(auto_now_add=True)
def get_date(self):
time = datetime.now()
if self.created_at.day == time.day:
return str(time.hour - self.created_at.hour) + " hours ago"
else:
if self.created_at.month == time.month:
return str(time.day - self.created_at.day) + " days ago"
else:
if self.created_at.year == time.year:
return str(time.month - self.created_at.month) + " months ago"
return self.created_at
またはそれを行うためには、いくつかのutilsの関数を作成することができますし、使用したい場合は、単にあなたのモデルの方法でそれを使用します。
djangoの管理サイトはテンプレートで構成されており、上書きすることもできます(https://docs.djangoproject.com/en/1.10/ref/contrib/admin/#admin-overriding-templates) – nthall
Iむしろこれの管理テンプレートを変更しないでください。私は、私がインポートすることができ、フォーマットの変更を行うライブラリがあるかどうかを調べようとしています。 – Stryker
@Strykerあなたはこれを解決しましたか? @FACode。 – FACode