#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.