python-2.7 - QuerySet 过滤器获取无列值,但表面上它不是无
问题描述
我在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 是无,就像:
>>> region = RegionConfig.objects.filter(region_name="rainbond")
>>> print len(region)
1
>>> r = region[0]
>>> print r.datacenter_env
test
>>> print r.create_time
None
我想知道为什么它没有。
解决方案
有几个选项可以帮助您解决这个问题
auto_now_add
-首次创建对象时自动将字段设置为现在auto_now
-每次保存对象时自动将字段设置为现在
所以你会像这样在你的模型上使用它们;
class RegionConfig(models.Model):
create_time = models.DateTimeField(auto_now_add=True)
modified_time = models.DateTimeField(auto_now=True)
需要注意的是,它们不会出现在管理员中,因为它们成为只读字段,因此在管理员类中,您需要定义;
readonly_fields=('create_time', 'modified_time')
推荐阅读
- java - 如何在页面对象模型中使用参数驱动程序返回通用类型的新对象
- reporting-services - Tablix 文本框边框渲染,两侧有 2 pt
- android - ViewModel 中的侦听器变量是否需要手动清除以避免内存泄漏?
- sql - 奇怪的 Oracle 错误:ORA-00936:缺少表达式
- c# - 遇到此错误:不允许主构造函数主体
- c# - 社交网络的内存缓存
- java - 如何使用 Java 检索 Mac OS 设置?
- string - 如何在 Google Apps 脚本中以编程方式添加拼音变音符号?
- json - 在颤动中填充来自json的对象列表
- javascript - JQuery表单提交不存储价值?