提交 2dfdde3c 编写于 作者: E Elias Dorneles

fallback to repr when can't convert to native string

上级 23b3336c
......@@ -192,9 +192,16 @@ class CsvItemExporter(BaseItemExporter):
fields = self._get_serialized_fields(item, default_value='',
include_empty=True)
values = [to_native_str(x) for _, x in fields]
values = list(self._build_row(x for _, x in fields))
self.csv_writer.writerow(values)
def _build_row(self, values):
for s in values:
try:
yield to_native_str(s)
except TypeError:
yield to_native_str(repr(s))
def _write_headers_and_set_fields_to_export(self, item):
if self.include_headers_line:
if not self.fields_to_export:
......@@ -204,7 +211,7 @@ class CsvItemExporter(BaseItemExporter):
else:
# use fields declared in Item
self.fields_to_export = list(item.fields.keys())
row = [to_native_str(s) for s in self.fields_to_export]
row = list(self._build_row(self.fields_to_export))
self.csv_writer.writerow(row)
......
......@@ -237,6 +237,13 @@ class CsvItemExporterTest(BaseItemExporterTest):
expected='"Mary,Paul",John\r\n',
)
def test_join_multivalue_not_strings(self):
self.assertExportResult(
item=dict(name='John', friends=[4, 8]),
include_headers_line=False,
expected='"[4, 8]",John\r\n',
)
class XmlItemExporterTest(BaseItemExporterTest):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册