2011-12-21 77 views
0

我有這樣一個模型:Django管理

class MyClass(models.Model): 
    source_time = TimestampField() 
    price = models.IntegerField() 
    quantity = models.IntegerField() 

,我想在管理頁面,以使這樣的date_hierachy:

class MyClassAdmin(admin.ModelAdmin): 
    list_display = ('source_time', 'price', 'quantity') 
    date_hierarchy = 'source_time' 

,但它需要一個DateTime 。 我試圖做的日期時間派生的自定義字段,將BigIntegerField轉換成DateTimeField字段,但我得到這個錯誤: 「夾縫AttributeError的同時呈現:‘長’對象有沒有屬性‘年’」

from django.db import models 
from datetime import datetime 
from time import strftime, mktime 
import time 

class TimestampField(models.DateTimeField): 
    __metaclass__ = models.SubfieldBase 
    def __init__(self, null = False, **kwargs): 
     super(TimestampField, self).__init__(**kwargs) 

    def db_type(self, connection): 
     return 'bigint' 

    def to_python(self, value): 
     super(TimestampField, self) 
     try: 
      return datetime.fromtimestamp(float(value)/1000000) 
     except: 
      return value 

新的自定義字段不應該像DateTimeField一樣運行嗎? 如何使表date_hierarchy工作,如果我有一個BigInteger字段在表中?

回答

0

您可以根據現有的代碼編寫新的date_hierarchy。請參閱文件:django/contrib/admin/templatetags/admin_list.py,第235行。

+0

如何爲單個ModelAdmin重寫'def date_hierarchy(cl):'? – d3vid 2016-06-24 14:32:20