Clementine
Clementine

Reputation: 112

Django import-export how to handle blank Charfield

I'm trying to import some data with django import-export module. I'm having a problem and can't find any solutions to it despite the fact that it seems to be a very basic use of the import...

I'm trying to import some CharFields. These fields are not mendatory and as recommended by Django community, they are defined with blank=True in my model but not null=True.

Example:

description = models.CharField(max_length=2000, blank=True )

The problem is simple: When I try to import this field with an empty value, I get the error "NOT NULL constraint failed" on that field.

I don't understand how to solve this. Should I add null=True even if it's not usually recommended? Is there an option I don't know about?

Thanks for your help.

Upvotes: 1

Views: 1958

Answers (1)

Matthew Hegarty
Matthew Hegarty

Reputation: 4231

As you say, the Django docs state that you should avoid setting null on CharField.

django-import-export should correctly handle persisting an empty string. However, we have seen that when importing from Excel, empty cells can be treated as None.

To get around this, you can declare a Field and add a default empty string and this should mean that Null / empty values are persisted as empty strings:

# adding 'default' will force empty values to be persisted as empty strings
book_id = fields.Field(attribute="book_id", column_name="id",
            widget=widgets.CharWidget(), default="")

Upvotes: 2

Related Questions