我有一个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和uptime不进行转换:
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。
发布于 2017-09-27 11:49:48
不知道你为什么要这么做。Django包含一个queryset方法来返回dicts:Test04.objects.values()。
model_to_dict是一种内部实用程序方法,用于转换在表单中使用的模型实例,这也是在forms模块中找到它的原因。自动填充的字段(就像您的两个日期时间一样)不包含在表单中,因为没有理由编辑它们。
https://stackoverflow.com/questions/46447064
复制相似问题