首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QuerySet筛选器获取None列值,但从表面上看它不是None

QuerySet筛选器获取None列值,但从表面上看它不是None
EN

Stack Overflow用户
提问于 2019-04-10 16:39:41
回答 1查看 19关注 0票数 0

我在mysql中有一段数据,它有一个名为create_time的列,它的值是0000-00-00 00:00:00.000000。我在Navicat中检查过。表格模型:

代码语言:javascript
复制
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,就像这样:

代码语言:javascript
复制
>>> region = RegionConfig.objects.filter(region_name="rainbond")
>>> print len(region)
1
>>> r = region[0]
>>> print r.datacenter_env
test
>>> print r.create_time   
None

我想知道为什么没有。

EN

回答 1

Stack Overflow用户

发布于 2019-04-10 16:50:41

有几个选项可以帮助你做到这一点

  • auto_now_add -首次保存对象时自动将字段设置为now -每次保存对象时自动将字段设置为now

所以你可以像这样在你的模型上使用它们;

代码语言:javascript
复制
class RegionConfig(models.Model):
    create_time = models.DateTimeField(auto_now_add=True)
    modified_time = models.DateTimeField(auto_now=True)

需要注意的是,它们不会出现在admin中,因为它们变成了只读字段,所以在admin类中,您需要定义;

代码语言:javascript
复制
readonly_fields=('create_time', 'modified_time')

readonly_fields文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55608222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档