Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django导入导出-无法导入带有BinaryField的模型_Python_Django_Django Import Export - Fatal编程技术网

Python Django导入导出-无法导入带有BinaryField的模型

Python Django导入导出-无法导入带有BinaryField的模型,python,django,django-import-export,Python,Django,Django Import Export,我正在尝试从具有nullableBinaryField的模型导入数据。该数据不包含该字段,我希望在该字段中使用空值导入该数据。如果给定id的数据库中已经存在该字段,则该字段应保持原样 我从相应的资源对象中的字段白名单中删除了该字段,并将其添加到排除黑名单中。但是,我在导入时遇到此错误-无法pickle memoryview对象 回溯: Traceback (most recent call last): File "/lib/python3.5/site-packages/import_expo

我正在尝试从具有nullable
BinaryField
的模型导入数据。该数据不包含该字段,我希望在该字段中使用空值导入该数据。如果给定
id
的数据库中已经存在该字段,则该字段应保持原样

我从相应的
资源
对象中的
字段
白名单中删除了该字段,并将其添加到
排除
黑名单中。但是,我在导入时遇到此错误-
无法pickle memoryview对象

回溯:

Traceback (most recent call last):
File "/lib/python3.5/site-packages/import_export/resources.py", line 451, in import_row
original = deepcopy(instance)
File "/lib/python3.5/copy.py", line 182, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/lib/python3.5/copy.py", line 297, in _reconstruct
state = deepcopy(state, memo)
File "/lib/python3.5/copy.py", line 155, in deepcopy
y = copier(x, memo)
File "/lib/python3.5/copy.py", line 243, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/lib/python3.5/copy.py", line 174, in deepcopy
rv = reductor(4)
TypeError: can't pickle memoryview objects
包版本-django==1.11,django导入导出==0.6

编辑:


您是否在
ABCModelForm
中添加了
binary_字段
?如果是,则它正在创建问题,因为不可能在ModelForm中包含BinaryField。仅供参考:

也许传递实际数组而不是内存视图可以解决您的问题。如果你想并行执行一个函数,如果我没有记错的话,所有的参数都必须是可选择的。至少python多处理就是这样。因此,您可以将数组传递给函数,并在函数中创建memoryview


参考资料:

遗憾的是,这似乎是模块的问题

在Python 2.7+和3.5.2+中,允许对
memoryview
对象进行酸洗。请尝试以下代码以确认:

import pickle

test = memoryview(b'abc')
test.__reduce__()
上述操作将引发以下错误:

Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib/python2.7/copy_reg.py", line 70, in _reduce_ex
    raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle memoryview objects
这会导致错误(
实例
包含作为
内存视图
对象的二进制字段)。
在当前版本(1.0.0)中,这种情况在第行发生

由模块的检索/生成的实例不考虑
二进制字段


您可能应该就此打开一张罚单。

专有代码,因此添加了它的简化版本…您使用的是什么版本的
django import-export
?django import-export是0.6brain-fart,抱歉@Roshan在最新的0.7版本中会出现这种情况吗?使用django导入导出,甚至试图在应用程序级别转储数据库,确实是对资源、时间和精力的巨大浪费。使用为此定制的工具-这是您的数据库转储工具。不,我在ModelForm的Meta classUm中有
exclude=['binary\u field']
,我不会在任何地方传递memoryview。这可能是由django import Export隐式完成的memoryview是在BinaryFields中创建的。to_python方法:链接来自当前头部,但行为已经保持了一段时间。
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib/python2.7/copy_reg.py", line 70, in _reduce_ex
    raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle memoryview objects
original = deepcopy(instance)