I'm syncing a large amount of data and I'm getting this error back: A string literal cannot contain NUL (0x00) characters. Obviously this is a postgres problem, but I'm not quite sure how to solve it. Is there a way to strip null characters out at the Django model level? I have a large set of fields that I'm syncing.
This bug fix suggests:
s.decode("utf-8", errors="replace").replace("\x00", "\uFFFD")
Only the .replace is necessary for the OP's issue, which replaces the null with a � character. I've included .decode too as it protects against other encoding issues that might arise in similar situations.
This would go in a .clean method somewhere - maybe subclass TextField or CharField if you want to apply it globally.
Unless you definitely do want to store NUL characters, you should sanitize your text  so it does not contain them. At the model level, you'd define a clean_fieldname method to do that.
If you do want to store them, you need to store them in a binary-compatible field in the database. Django 1.6+ has BinaryField which should work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With