Django管理员使用date_hierarchy和unix时间戳

时间:2011-12-21 11:32:32

标签: django django-models django-admin

我有一个类似的模型:

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。 我试图做一个从DateTime派生的自定义字段,它会将BigIntegerField转换为DateTimeField,但是我收到了这个错误: “在渲染时捕获了AttributeError:'long'对象没有属性'year'”

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完全相同? 如果表中有BigInteger字段,我怎么能使date_hierarchy工作?

1 个答案:

答案 0 :(得分:0)

您可以根据现有代码编写新的date_hierarchy。请参阅文件:django/contrib/admin/templatetags/admin_list.py,第235行。