我有一个二十字节的十六进制哈希值,我想将其存储在 django 模型中。
如果我使用文本字段,它会被解释为 unicode 并且返回乱码。
目前我正在对其进行编码和解码,这确实使代码变得混乱,
因为我必须能够通过它进行过滤。
def get_changeset(self):
return bin(self._changeset)
def set_changeset(self, value):
self._changeset = hex(value)
changeset = property(get_changeset, set_changeset)
这是一个过滤的例子
Change.objects.get(_changeset=hex(ctx.node()))
这是 django 开发人员推荐的方法,但我真的很难接受这样一个事实:只存储 20 个字节是这么难看。
也许我太纯粹了,但理想情况下我能够写
Change.objects.get(changeset=ctx.node())
这些属性允许我写:
change.changeset = ctx.node()
这就是我能要求的最好的了。
从 1.6 开始,Django 有BinaryField允许存储原始二进制数据。然而,对于哈希值和其他高达 128 位的值,使用它会更有效(至少对于 PostgreSQL 后端)UUIDField在 Django 1.8+ 中可用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)