将os.urandom变量存储到Django中的Sqlite数据库

时间:2016-05-12 06:15:14

标签: python django sqlite django-views

我试图将随机变量存储到Django中的Sqlite数据库,但是我收到了这个错误:

  

除非使用可解释8位字节串的text_factory(如text_factory = str),否则不得使用8位字节串。强烈建议您只需将应用程序切换为Unicode字符串。

这是我的代码:

random_number = os.urandom(16)
SomeModel.objects.filter(id=2).update(number=random_number)

Models.py:

class SomeModel(models.Model):
    random = models.CharField(max_length=32)

我使用Python 2.7.10和Django 1.9。

1 个答案:

答案 0 :(得分:1)

如果仍有可能,您可以更改模型以使用BinaryField

class SomeModel(models.Model):
    random = models.BinaryField(max_length=32)

另一方面,如果模型已经完成,请考虑一些二进制到文本编码,如base64:

from base64 import b64encode

random_number = os.urandom(16)
SomeModel.objects.filter(id=2).update(number=b64encode(random_number))