我在mysql中有一条数据,该数据有一个名为create_time的列,其值是0000-00-00 00:00:00.000000。我在Navicat中检查。 表格模型:
class Meta:
db_table = 'region_info'
region_id = models.CharField(max_length=32, unique=True, help_text=u"region id")
region_name = models.CharField(max_length=32, unique=True, help_text=u"数据中心名称")
region_alias = models.CharField(max_length=32, help_text=u"数据中心别名")
datacenter_env = models.CharField(max_length=20, help_text=u"数据中心所属环境", default='production')
url = models.CharField(max_length=256, help_text=u"数据中心API url")
wsurl = models.CharField(max_length=256, help_text=u"数据中心Websocket url")
httpdomain = models.CharField(max_length=256, help_text=u"数据中心http应用访问根域名")
tcpdomain = models.CharField(max_length=256, help_text=u"数据中心tcp应用访问根域名")
token = models.CharField(max_length=40, null=True, blank=True, default="", help_text=u"数据中心token")
status = models.CharField(max_length=2, help_text=u"数据中心状态 0:编辑中 1:启用 2:停用 3:维护中")
create_time = models.DateTimeField(default=datetime.now, help_text=u"创建时间")
desc = models.CharField(max_length=128, blank=True, help_text=u"数据中心描述")
scope = models.CharField(max_length=10, default="private", help_text=u"数据中心范围 private|public")
ssl_ca_cert = models.TextField(blank=True, null=True, help_text=u"数据中心访问ca证书地址")
cert_file = models.TextField(blank=True, null=True, help_text=u"验证文件")
key_file = models.TextField(blank=True, null=True, help_text=u"验证的key")
当我使用RegionConfig.objects.filter
获取数据时,我发现属性create_time为None,就像这样:
>>> region = RegionConfig.objects.filter(region_name="rainbond")
>>> print len(region)
1
>>> r = region[0]
>>> print r.datacenter_env
test
>>> print r.create_time
None
我想知道为什么不选择。
答案 0 :(得分:0)
有两个选项可以帮助您解决此问题
auto_now_add
-第一次创建对象时自动将字段设置为现在 auto_now
-每次保存对象时自动将字段设置为现在 因此,您可以像这样在模型中使用它们;
class RegionConfig(models.Model):
create_time = models.DateTimeField(auto_now_add=True)
modified_time = models.DateTimeField(auto_now=True)
需要注意的是,它们不会显示在admin中,因为它们变成了只读字段,因此在admin类中,您需要定义;
readonly_fields=('create_time', 'modified_time')