使用列表(map(model_to_dict,queryset_list))不映射createtime和updatetime字段

时间:2017-09-27 11:46:28

标签: python django django-models

我有一个Test04模型,我提供了ctimeuptime个字段。

class Test04(models.Model):
    testTime = models.DateTimeField(null=True)
    ctime = models.DateTimeField(auto_now_add=True)
    uptime = models.DateTimeField(auto_now=True)

但是当我使用list(map(model_to_dict, queryset_list))方法将查询集转换为字典时,我发现ctime和正常运行时间不会转换:

from django.forms.models import model_to_dict

print (models.Test04.objects.all())


all =models.Test04.objects.all()

print (all[0].ctime)  # 2017-09-26 07:49:02.012489+00:00

print (list(map(model_to_dict, all))) # [{u'id': 1, 'testTime': datetime.datetime(2017, 9, 26, 7, 49, 1, 973016, tzinfo=<UTC>)}, {u'id': 2, 'testTime': datetime.datetime(2017, 9, 26, 8, 3, 24, 665944, tzinfo=<UTC>)}, {u'id': 3, 'testTime': datetime.datetime(2017, 9, 26, 0, 12, 12, 683801, tzinfo=<UTC>)}, {u'id': 4, 'testTime': datetime.datetime(2017, 9, 26, 0, 12, 43, 2169, tzinfo=<UTC>)}, {u'id': 5, 'testTime': datetime.datetime(2017, 9, 26, 8, 13, 16, 164395, tzinfo=<UTC>)}, {u'id': 6, 'testTime': datetime.datetime(2017, 9, 26, 0, 14, 8, 812063, tzinfo=<UTC>)}, {u'id': 7, 'testTime': datetime.datetime(2017, 9, 26, 0, 15, 32, 945493, tzinfo=<UTC>)}]

在最后一行的输出中,您会看到每个字典中都没有ctimeuptime

1 个答案:

答案 0 :(得分:2)

不确定为什么要这样做。 Django包含一个返回dicts的查询集方法:Test04.objects.values()

model_to_dict是一个内部实用程序方法,用于转换模型实例以便在表单中使用,这就是它在表单模块中找到的原因。自动填充的字段(如两个日期时间)不包含在表单中,因为没有理由对其进行编辑。