#22272: model.DecimalField with decimal_places=0
----------------------------------------------+-------------------------
     Reporter:  merb                          |      Owner:  nobody
         Type:  Bug                           |     Status:  new
    Component:  Database layer (models, ORM)  |    Version:  1.7-alpha-2
     Severity:  Release blocker               |   Keywords:
 Triage Stage:  Unreviewed                    |  Has patch:  0
Easy pickings:  0                             |      UI/UX:  0
----------------------------------------------+-------------------------
 Currently I can't create DecimalField with decimal_places=0 on Postgresql
 with psycopg2 (sqlite3 works as expected)

 In PostgreSQL I can create numeric fields with a scale of zero:
 http://www.postgresql.org/docs/9.3/static/datatype-numeric.html

 But the current implementation disallows this: (The Exception I hit)

 {{{
 Running migrations:
   Applying envisia_article.0001_initial...DEBUG:django.db.backends:(0.002)
             SELECT c.relname
             FROM pg_catalog.pg_class c
             LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
             WHERE c.relkind IN ('r', 'v', '')
                 AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
                 AND pg_catalog.pg_table_is_visible(c.oid); args=None
 DEBUG:django.db.backends.schema:CREATE TABLE
 "envisia_article_solderresist" ("id" serial NOT NULL PRIMARY KEY, "name"
 varchar(100) NULL, "name_en" varchar(100) NULL); (params [])
 DEBUG:django.db.backends:(0.003) CREATE TABLE
 "envisia_article_solderresist" ("id" serial NOT NULL PRIMARY KEY, "name"
 varchar(100) NULL, "name_en" varchar(100) NULL); args=[]
 DEBUG:django.db.backends.schema:CREATE TABLE
 "envisia_article_bestpressurecolor" ("id" serial NOT NULL PRIMARY KEY,
 "name" varchar(100) NULL, "name_en" varchar(100) NULL); (params [])
 DEBUG:django.db.backends:(0.001) CREATE TABLE
 "envisia_article_bestpressurecolor" ("id" serial NOT NULL PRIMARY KEY,
 "name" varchar(100) NULL, "name_en" varchar(100) NULL); args=[]
 DEBUG:django.db.backends.schema:CREATE TABLE "envisia_article_cuinside"
 ("id" serial NOT NULL PRIMARY KEY, "value" numeric(10, None) NOT NULL);
 (params [])
 DEBUG:django.db.backends:(0.001) CREATE TABLE "envisia_article_cuinside"
 ("id" serial NOT NULL PRIMARY KEY, "value" numeric(10, None) NOT NULL);
 args=[]
 Traceback (most recent call last):
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/db/backends/utils.py", line
 61, in execute
     return self.cursor.execute(sql, params)
 psycopg2.DataError: invalid input syntax for integer: "none"
 LINE 1: ...nside" ("id" serial NOT NULL PRIMARY KEY, "value" numeric(10...
                                                              ^


 The above exception was the direct cause of the following exception:

 Traceback (most recent call last):
   File "./manage.py", line 10, in <module>
     execute_from_command_line(sys.argv)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/core/management/__init__.py",
 line 427, in execute_from_command_line
     utility.execute()
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/core/management/__init__.py",
 line 419, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/core/management/base.py",
 line 287, in run_from_argv
     self.execute(*args, **options.__dict__)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/core/management/base.py",
 line 336, in execute
     output = self.handle(*args, **options)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-
 packages/Django-1.7a2-py3.3.egg/django/core/management/commands/migrate.py",
 line 145, in handle
     executor.migrate(targets, plan, fake=options.get("fake", False))
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/db/migrations/executor.py",
 line 60, in migrate
     self.apply_migration(migration, fake=fake)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/db/migrations/executor.py",
 line 94, in apply_migration
     migration.apply(project_state, schema_editor)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/db/migrations/migration.py",
 line 97, in apply
     operation.database_forwards(self.app_label, schema_editor,
 project_state, new_state)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-
 packages/Django-1.7a2-py3.3.egg/django/db/migrations/operations/models.py",
 line 28, in database_forwards
     schema_editor.create_model(model)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/db/backends/schema.py", line
 243, in create_model
     self.execute(sql, params)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/db/backends/schema.py", line
 95, in execute
     cursor.execute(sql, params)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/db/backends/utils.py", line
 77, in execute
     return super(CursorDebugWrapper, self).execute(sql, params)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/db/backends/utils.py", line
 61, in execute
     return self.cursor.execute(sql, params)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/db/utils.py", line 93, in
 __exit__
     six.reraise(dj_exc_type, dj_exc_value, traceback)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/utils/six.py", line 535, in
 reraise
     raise value.with_traceback(tb)
   File
 "/Users/schmitch/Programme/virtualenv/envisia_dashboard/lib/python3.3
 /site-packages/Django-1.7a2-py3.3.egg/django/db/backends/utils.py", line
 61, in execute
     return self.cursor.execute(sql, params)
 django.db.utils.DataError: invalid input syntax for integer: "none"
 LINE 1: ...nside" ("id" serial NOT NULL PRIMARY KEY, "value" numeric(10...
                                                              ^
 }}}

 As you can see, since I've runnning with debug is that numeric() is
 numeric(10, None) instead of numeric(10) or numeric(10, 0).
 Which is a bug and shouldn't occur.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/22272>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/047.d182d53eada3ae62e16612ee4c421fe7%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to