我有一个Test04模型,我提供了ctime
和uptime
个字段。
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>)}]
在最后一行的输出中,您会看到每个字典中都没有ctime
和uptime
。
答案 0 :(得分:2)
不确定为什么要这样做。 Django包含一个返回dicts的查询集方法:Test04.objects.values()
。
model_to_dict
是一个内部实用程序方法,用于转换模型实例以便在表单中使用,这就是它在表单模块中找到的原因。自动填充的字段(如两个日期时间)不包含在表单中,因为没有理由对其进行编辑。