The fact that some backends are more forgiving is exactly my point. Maybe the migrations engine should always force a datetime object (or at least a YYYY-MM-DD notation) to make it work consistently on all backends.
On Wednesday, January 4, 2017 at 11:35:38 AM UTC+1, Avraham Serour wrote: > > DateField is a representation of datetime.date, so you should assign a > date object and not a string, sqlite is more forgiving and doesn't complain > so much in many cases > > On Wed, Jan 4, 2017 at 12:13 AM, <[email protected] <javascript:>> wrote: > >> This field: >> >> activity_date = models.DateField('Datum', default='17/06/2017') >> >> >> Results in this migration: >> >> class Migration(migrations.Migration): >> >> dependencies = [ >> ('activities', '0006_auto_20161231_1703'), >> ] >> >> operations = [ >> migrations.AlterField( >> model_name='activity', >> name='activity_date', >> field=models.DateField(default='17/06/2017', >> verbose_name='Datum'), >> ), >> ] >> >> >> Which works fine on SQLite but gives this error on Postgres: >> >> Operations to perform: >> Apply all migrations: activities, addressbook, admin, auth, >> contenttypes, sessions, users >> Running migrations: >> Applying activities.0007_auto_20170103_2309...Traceback (most recent >> call last): >> File "manage.py", line 22, in <module> >> execute_from_command_line(sys.argv) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/core/management/__init__.py" >> , line 367, in execute_from_command_line >> utility.execute() >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/core/management/__init__.py" >> , line 359, in execute >> self.fetch_command(subcommand).run_from_argv(self.argv) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/core/management/base.py" >> , line 294, in run_from_argv >> self.execute(*args, **cmd_options) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/core/management/base.py" >> , line 345, in execute >> output = self.handle(*args, **options) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/core/management/commands/migrate.py" >> , line 204, in handle >> fake_initial=fake_initial, >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/migrations/executor.py" >> , line 115, in migrate >> state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, >> fake_initial=fake_initial) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/migrations/executor.py" >> , line 145, in _migrate_all_forwards >> state = self.apply_migration(state, migration, fake=fake, >> fake_initial=fake_initial) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/migrations/executor.py" >> , line 244, in apply_migration >> state = migration.apply(state, schema_editor) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/migrations/migration.py" >> , line 129, in apply >> operation.database_forwards(self.app_label, schema_editor, old_state, >> project_state) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/migrations/operations/fields.py" >> , line 204, in database_forwards >> schema_editor.alter_field(from_model, from_field, to_field) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/backends/base/schema.py" >> , line 495, in alter_field >> old_db_params, new_db_params, strict) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/backends/postgresql/schema.py" >> , line 117, in _alter_field >> new_db_params, strict, >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/backends/base/schema.py" >> , line 578, in _alter_field >> new_default = self.effective_default(new_field) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/backends/base/schema.py" >> , line 221, in effective_default >> default = field.get_db_prep_save(default, self.connection) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/models/fields/__init__.py" >> , line 755, in get_db_prep_save >> prepared=False) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/models/fields/__init__.py" >> , line 1280, in get_db_prep_value >> value = self.get_prep_value(value) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/models/fields/__init__.py" >> , line 1275, in get_prep_value >> return self.to_python(value) >> File >> "/webapps/mzg/venv/lib/python3.5/site-packages/django/db/models/fields/__init__.py" >> , line 1250, in to_python >> params={'value': value}, >> django.core.exceptions.ValidationError: ["'17/06/2017' waarde heeft een >> ongeldige datumnotatie. Deze moet in de YYYY-MM-DD notatie opgegeven >> worden."] >> >> >> >> The error says: "DATE" has an invalid date notation. It must be submitted >> as YYYY-MM-DD notation. Timezone/locale is Europe/Amsterdam in case that >> makes a difference. >> >> >> On Tuesday, January 3, 2017 at 2:17:36 PM UTC+1, Avraham Serour wrote: >>> >>> please post your migration file and the error >>> >>> On Tue, Jan 3, 2017 at 12:00 PM, <[email protected]> wrote: >>> >>>> I recently set a default value in my local date format on a >>>> DateTimeField while I was using SQLite. The migration ran fine on my >>>> SQLite >>>> dev database, but when trying to apply the migration on my production >>>> Postgres database I got an error saying that a default value for >>>> DateTimeField must be in the format of 'YYYY-MM-DD'. Wouldn't it be >>>> prudent >>>> to force users to always specify the default value in the 'YYYY-MM-DD' >>>> format to avoid this problem of portability? (Not sure how MySQL handles >>>> it) >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Django users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at https://groups.google.com/group/django-users. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/django-users/4f8e0aad-9c6e-45c5-a476-22f604584b0a%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/django-users/4f8e0aad-9c6e-45c5-a476-22f604584b0a%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at https://groups.google.com/group/django-users. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/562fac5e-de18-4eb4-b90a-3121f43c29bc%40googlegroups.com >> >> <https://groups.google.com/d/msgid/django-users/562fac5e-de18-4eb4-b90a-3121f43c29bc%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/e2f9758c-fc43-41c3-b7d2-fdbd8cc2998f%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

