> 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?
Because attempting to interpret the string '17/06/2017' as a date is risky and
will lead to trouble sooner or later, regardless the backend.

Antonis Christofides
http://djangodeployment.com

On 01/04/2017 04:58 PM, Avraham Serour wrote:
> 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
> <[email protected] <mailto:[email protected]>> 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 Christofides
>     http://djangodeployment.com
>
>
>     On 01/04/2017 03:10 PM, [email protected] <mailto:[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]> 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]. 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/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
>>     <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
>>     <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
>     <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
>     <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/CAFWa6tKHWTtEr2XjRXm520tz9sGT0Xaw9UwROt3EGKSJZGMbbg%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-users/CAFWa6tKHWTtEr2XjRXm520tz9sGT0Xaw9UwROt3EGKSJZGMbbg%40mail.gmail.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/58324300-c7be-41aa-86fd-7e9e72152a94%40djangodeployment.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to