我有一个类似的模型:
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工作?
答案 0 :(得分:0)
您可以根据现有代码编写新的date_hierarchy
。请参阅文件:django/contrib/admin/templatetags/admin_list.py
,第235行。