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]> 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:
>>>
>>> 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].
>>> 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/ms
>>> gid/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
> <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.
>

-- 
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/CAFWa6tJqUQoC74tkQzZKBC4c%2BMB_FdOzGGH%2BoYzmyJjSkQxJdg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to