Resolviendo ValidationError: En Django 1.9.2?

Antes creé dos campos y migré todo. después de eso intenté agregar tres campos, about , birthdate en el modelo. He creado un modelo como este:

 from __future__ import unicode_literals from django.utils import timezone from django.db import models # Create your models here. class APP1Model(models.Model): name = models.CharField(max_length=120) percentage = models.CharField(max_length=120) title = models.CharField(max_length=100,default='Title') birth_date = models.DateTimeField(blank=True, null=True) about = models.TextField(max_length=100,null=True,default='About Yourself') def __unicode__(self): return self.name 

Pero cuando bash migrar en el shell de Python, se muestra un error de validación como este:

 Operations to perform: Apply all migrations: admin, contenttypes, auth, app1, sessions Running migrations: Applying app1.0005_auto_20160217_1346...Traceback (most recent call last): File "manage.py", line 10, in  execute_from_command_line(sys.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 353, in execute_from_command_line utility.execute() File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 345, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 348, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 399, in execute output = self.handle(*args, **options) File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 200, in handle executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial) File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 92, in migrate self._migrate_all_forwards(plan, full_plan, fake=fake, fake_initial=fake_initial) File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 121, in _migrate_all_forwards state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 198, in apply_migration state = migration.apply(state, schema_editor) File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/migration.py", line 123, in apply operation.database_forwards(self.app_label, schema_editor, old_state, project_state) File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/operations/fields.py", line 62, in database_forwards field, File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/schema.py", line 221, in add_field self._remake_table(model, create_fields=[field]) File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/schema.py", line 103, in _remake_table self.effective_default(field) File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/schema.py", line 210, in effective_default default = field.get_db_prep_save(default, self.connection) File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 728, in get_db_prep_save prepared=False) File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1301, in get_db_prep_value value = self.get_prep_value(value) File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1296, in get_prep_value return self.to_python(value) File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1273, in to_python params={'value': value}, django.core.exceptions.ValidationError: [u"'' value has an invalid date format. It must be in YYYY-MM-DD format."] 

¿Cómo rectificar esto? He intentado todas las soluciones que he leído aquí, pero no funciona?

Estoy usando Django: 1.9.2

Mi archivo de migración

 from __future__ import unicode_literals from django.db import migrations, models 

Migración de clase (migraciones.Migración):

 dependencies = [ ('app1', '0004_auto_20160217_0427'), ] operations = [ migrations.AddField( model_name='app1model', name='about', field=models.TextField(default='About Yourself', max_length=100, null=True), ), migrations.AddField( model_name='app1model', name='birth_date', field=models.DateField(blank=True, default='', null=True), ), migrations.AddField( model_name='app1model', name='title', field=models.CharField(default='', max_length=100), ), ] 

Pasé por el mismo problema hace algunos meses. Acabo de eliminar los cambios de campo de fecha de nacimiento en todos los archivos de migración dentro de la carpeta de migración. Luego reemplacé la fecha de nacimiento con este código:

 birthdate = models.DateTimeField(blank=True, null=True) 

Luego, después de aplicar la migración, funciona bien …

Parece que has pasado DateTimeField

 birth_date = models.DateTimeField(blank=True, null=True) 

en su modelo de APP1 (modelo) y la migración muestra los campos de fecha

 models.DateField(blank=True, default='', null=True) 

primero corrija su modelo y no pase default='' in DateField,

Use DateField lugar de DatiTimeField para la fecha de nacimiento

luego elimine su archivo de migración app1.0005_auto_20160217_1346

y ejecuta makemigrations y migra tu aplicación funcionará bien.

Cambiar el DateField a DateTimeField no es una mala idea. Aunque, hay un DateField y un DateTimeField , que son diferentes por algunas razones.

Este error ocurre cuando se aplica un valor predeterminado a DateField en models.py en el formato incorrecto.

Según su salida de terminal, el error se produce en el archivo de migración 0005_auto_20160217_1346.py . Debe encontrar ese archivo de migración en ‘app1 / 0005_auto_20160217_1346.py`, edítelo y busque:

 ... migrations.AddField( model_name='app1model', name='birth_date', field=models.DateField(blank=True, default='', null=True), ), ... 

Ahora, puede ver el DateField con el atributo default contiene una con formato %d-%m-%Y , por ejemplo. Django necesita un formato %Y-%m-%d .

Para resolver este problema, elimine el atributo default , guarde el archivo y vuelva a realizar las migraciones .