【发布时间】:2014-07-07 11:49:36
【问题描述】:
我有一个简单的 Django 模型,其中包含一个我想腌制的二进制字段。
class MyModel(models.Model):
bin_data = models.BinaryField()
根据我的单元测试的上下文,我执行以下操作:
import pickle
tmp_obj = MyModel.objects.create(bin_data="12345")
obj = MyModel.objects.get(pk=tmp_obj.pk) # load from DB
data = pickle.dumps(obj)
obj2 = pickle.loads(data)
但是 pickle.dumps() 失败:
TypeError: can't pickle buffer objects
当我使用以下命令腌制时:
data = pickle.dumps(obj, protocol=-1)
转储成功但 pickle.loads() 失败:
TypeError: buffer() takes at least 1 argument (0 given)
这实际上与我在使用 django-cacheops 库时遇到的问题有关,该库用于缓存我的查询集。
在后台 django-cacheops 使用 pickle.dumps(obj, protocol=-1),我收到与上述 pickle.loads() 相同的错误
我会很感激 pickle 问题和 django-cacheops 问题的答案。
谢谢
【问题讨论】: