У меня есть модель, например, такая:
class Item(models.Model):
text = model.CharField(max_length=50)
extra_text = model.CharField(max_length=50, blank=True)
Допустим, у меня есть экземпляр объекта, где extra_text
пусто, поэтому в базе данных он хранится как пустая строка ''
Я прочитал этот объект, например:
myitem = Item.objects.get(id=1)
Теперь я проверяю, каково значение myitem.extra_text
, и оно не ''
, а None
(здесь в оболочке IPython):
In [36]: myitem.extra_text == ''
Out[36]: False
In [37]: myitem.extra_text == None
Out[37]: True
In [38]: myitem.extra_text is None
Out[38]: True
Разве это не должно быть ''
на данный момент?Это ''
в базе данных, поскольку ему не разрешено быть NULL
.
Моя проблема заключается в том, что такой объект не может быть сохранен без изменений обратно в базу данных, потому что, если я попытаюсь, я получу:
In [39]: myitem.save()
<skipping Traceback>
IntegrityError: null value in column "extra_text" violates not-null constraint
Мне очень странно, что экземпляр объекта, который я только что прочитал из базы данных и никак не изменил, не может быть сохранен обратно в базу данных.Я делаю что-то очень неправильно?Как правильно решить эту проблему?