well the ORM does abstract the different API's for each backend, you may
give an datetime object and it will take care to format to the appropriate
thing the backend needs.

you are right that it does not check the type of the value passed, it is a
valid point that the library should check the type, but on the other hand
if one is using sqlite why enforce stricter rules than the backend I'm
using just because one other backend has a problem with it?

Also this is python, if it quacks like a duck then it is a duck, right?


On Wed, Jan 4, 2017 at 3:24 PM, Antonis Christofides <
anto...@djangodeployment.com> wrote:

> 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 Christofideshttp://djangodeployment.com
>
>
> On 01/04/2017 03:10 PM, jorrit...@gmail.com 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, <jorr...@gmail.com> 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, <jorr...@gmail.com> 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.Validat
>>>>> ionError: ["'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, <jorr...@gmail.com> 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
>>>>>>> django-users...@googlegroups.com. To post to this group, send email
>>>>>>> to django...@googlegroups.com. 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/4f8e0aad-9c6e-45c5-a476-22f604584b0a%40goog
>>>>>>> legroups.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
>>>>> django-users...@googlegroups.com. To post to this group, send email
>>>>> to django...@googlegroups.com. 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 django-users...@googlegroups.
>>> com. To post to this group, send email to django...@googlegroups.com.
>>> 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/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 django-users+unsubscribe@
> googlegroups.com. To post to this group, send email to
> django-users@googlegroups.com. 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 django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> 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
> <https://groups.google.com/d/msgid/django-users/918d7b4b-d36a-2764-c89b-bb6bd5880dea%40djangodeployment.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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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/CAFWa6tKHWTtEr2XjRXm520tz9sGT0Xaw9UwROt3EGKSJZGMbbg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to