Немного не понял насчет "что делать с валидацией".
Магия в том, что TextField - это, по-сути, LONGTEXT(ну или стринг, для прощего понимания). стринг может быть пустым - ''. А datetime(или integer, в случае с ForeignKey), если пустой, то не может быть - '', только NULL.
Короче, почитайте про типы полей в БД(не джанго, а именно бд) :)