Django + Postgres:字符串文字不能包含 NUL (0x00) 字符

aro*_*ooo 9 python django postgresql

我正在同步大量数据A string literal cannot contain NUL (0x00) characters.,但又收到此错误:显然这是 postgres 问题,但我不太确定如何解决它。有没有办法在 Django 模型级别去除空字符?我有一大堆要同步的字段。

Chr*_*ris 8

此错误修复建议:

s.decode("utf-8", errors="replace").replace("\x00", "\uFFFD")
Run Code Online (Sandbox Code Playgroud)

只有.replaceOP 的问题是必需的,它将 null 替换为 ? 特点。我也包括在内,.decode因为它可以防止在类似情况下可能出现的其他编码问题。

这将在某个.clean方法中使用 - 如果您想全局应用它,可能是 TextField 或 CharField 的子类。


nig*_*222 2

除非您确实想要存储 NUL 字符,否则您应该清理文本,使其不包含它们。在模型级别,您需要定义一个clean_fieldname方法来执行此操作。

如果您确实想存储它们,则需要将它们存储在数据库中的二进制兼容字段中。Django 1.6+BinaryField应该可以工作。