Instead of default='17/06/2017', you should write default=datetime(2017, 6, 17). The bug in Django (if it is a bug, and I think it is) is that it does not require you to do so. There's probably a reason for it, but I don't really know..
Regards, Antonis Antonis Christofides http://djangodeployment.com On 01/04/2017 03:10 PM, [email protected] wrote: > I thought the whole point of an ORM was to abstract away differences between > backends... That's why this seems like a bug to me. > > > On Wednesday, January 4, 2017 at 1:02:07 PM UTC+1, Avraham Serour wrote: > > Well this is the reality right now, if you think the framework is acting > wrong you may file a bug report. > > In my opinion the wrong side of the equation is you, the framework is just > passing the value you assigned, the ORM tries to make a consistent API > between backends but I wouldn't really expect the same behaviour from all > backends, after all they are different backends, they will have different > bugs, performance and ultimately different behaviour > > On Wed, Jan 4, 2017 at 1:47 PM, <[email protected] <javascript:>> wrote: > > 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]> 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: > | > Operationsto perform: Applyall > > migrations:activities,addressbook,admin,auth,contenttypes,sessions,users > Runningmigrations: > Applyingactivities.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,inexecute_from_command_line utility.execute() > > File"/webapps/mzg/venv/lib/python3.5/site-packages/django/core/management/__init__.py",line > 359,inexecute > 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,inrun_from_argv self.execute(*args,**cmd_options) > > File"/webapps/mzg/venv/lib/python3.5/site-packages/django/core/management/base.py",line > 345,inexecute output =self.handle(*args,**options) > > File"/webapps/mzg/venv/lib/python3.5/site-packages/django/core/management/commands/migrate.py",line > 204,inhandle fake_initial=fake_initial, > > File"/webapps/mzg/venv/lib/python3.5/site-packages/django/db/migrations/executor.py",line > 115,inmigrate 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,inapply_migration state > =migration.apply(state,schema_editor) > > File"/webapps/mzg/venv/lib/python3.5/site-packages/django/db/migrations/migration.py",line > 129,inapply > > 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,indatabase_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,inalter_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,ineffective_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,inget_db_prep_save prepared=False) > > File"/webapps/mzg/venv/lib/python3.5/site-packages/django/db/models/fields/__init__.py",line > 1280,inget_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,inget_prep_value returnself.to_python(value) > > File"/webapps/mzg/venv/lib/python3.5/site-packages/django/db/models/fields/__init__.py",line > 1250,into_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] > this group at > https://groups.google.com/group/django-users > <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 > <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 > <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 > <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 > <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 > > <https://groups.google.com/d/msgid/django-users/e2f9758c-fc43-41c3-b7d2-fdbd8cc2998f%40googlegroups.com?utm_medium=email&utm_source=footer>. > For more options, visit https://groups.google.com/d/optout > <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] > <mailto:[email protected]>. To post to this group, > send email to [email protected] > <mailto:[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/a4113f3e-3166-453f-ae1e-82158b9d9b1b%40googlegroups.com > <https://groups.google.com/d/msgid/django-users/a4113f3e-3166-453f-ae1e-82158b9d9b1b%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/918d7b4b-d36a-2764-c89b-bb6bd5880dea%40djangodeployment.com. For more options, visit https://groups.google.com/d/optout.

