【发布时间】:2016-05-12 06:15:13
【问题描述】:
我正在尝试将随机变量存储到 Django 中的 Sqlite 数据库,但出现此错误:
除非您使用可以解释 8 位字节串的 text_factory(如 text_factory = str),否则不得使用 8 位字节串。强烈建议您将应用程序切换为 Unicode 字符串。
这是我的代码:
random_number = os.urandom(16)
SomeModel.objects.filter(id=2).update(number=random_number)
模型.py:
class SomeModel(models.Model):
random = models.CharField(max_length=32)
我使用 Python 2.7.10 和 Django 1.9。
【问题讨论】:
-
SomeModel是什么样的?SomeModel.number的类型是什么?os.urandom()不返回数字,它返回字节(python2 中也是 str)。 -
我已经将模型中的数字字段设置为 CharField,所以可能存在问题。是的,我知道它返回字节,但是我如何对其进行编码,以便 Sqlite 可以存储它?我会将模型更新为问题。
-
这似乎相关:docs.djangoproject.com/en/1.9/ref/models/fields/#binaryfield "存储原始二进制数据的字段。它仅支持字节分配。请注意,此字段的功能有限。例如,无法过滤查询集在 BinaryField 值上。”
标签: python django sqlite django-views