2016-10-31 15 views
0

djangoのfacebook/twitterで使用されている時刻/日付の形式を表示するにはadmindjango 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を使用している場合 enter image description here

:人間の時間内の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の関数を作成することができますし、使用したい場合は、単にあなたのモデルの方法でそれを使用します。

enter image description here

+0

djangoの管理サイトはテンプレートで構成されており、上書きすることもできます(https://docs.djangoproject.com/en/1.10/ref/contrib/admin/#admin-overriding-templates) – nthall

+0

Iむしろこれの管理テンプレートを変更しないでください。私は、私がインポートすることができ、フォーマットの変更を行うライブラリがあるかどうかを調べようとしています。 – Stryker

+0

@Strykerあなたはこれを解決しましたか? @FACode。 – FACode

答えて

2

あなたはこのようなあなたのモデルに追加メソッドを使用することができますより多くの状況

ここではDjangoのadminのドキュメントがある中で、ここにあなたが必要とするすべてを見つける: https://docs.djangoproject.com/en/1.10/ref/contrib/admin/

+0

@Strykerこの例はあなたを助けませんか? – FACode

+0

この例は私にとっては役に立ちます。必要に応じて、これを行うためのより複雑な関数を作成することができます。 – FACode

+0

私は数時間後にもう一度試してみます。おそらく私は間違いを犯しました。 – Stryker

関連する問題