#29347 closed Bug (invalid)
InternalError at /admin/foo/bar/taz/change/ Error in python: TypeError DETAIL: a float is required
Reported by: | rvernica | Owned by: | nobody |
---|---|---|---|
Component: | contrib.admin | Version: | 2.0 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I get the following error when accessing the detail page of my model in /admin/:
InternalError at /admin/foo/bar/taz/change/ Error in python: TypeError DETAIL: a float is required
The model is:
class Bar(models.Model): id = models.CharField(max_length=128, primary_key=True) modify_date = models.DateTimeField('date modified') change_date = models.DateTimeField('date changed') a = models.CharField(max_length=61) b = models.CharField(max_length=61) def __str__(self): return "{}:{}".format(self.wafer, self.location) class BarAdmin(admin.ModelAdmin): fields = ('id', 'modify_date', 'change_date', 'a', 'b') readonly_fields = ('id', 'modify_date', 'change_date', 'a', 'b') list_display = ('id', 'a', 'b', 'modify_date', 'change_date')
The backend is PostgreSQL 10 and the table used by the model is a Foreign Data Wrapper table. The list page works fine, it is just the detail page that is causing issues. Here is the table schema:
CREATE FOREIGN TABLE django.foo_bar ( id VARCHAR(128), modify_date TIMESTAMP, change_date TIMESTAMP, a VARCHAR(61), b VARCHAR(61) ) SERVER filesystem OPTIONS (...);
Here is the complete traceback:
Request Method: GET Request URL: http://cessna.labs.hpicorp.net:8000/admin/foo/bar/taz/change/ Django Version: 2.0.2 Python Version: 3.6.3 Installed Applications: ['internal.apps.InternalConfig', 'sers.apps.SersConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.postgres', 'prettyjson'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py" in _execute 85. return self.cursor.execute(sql, params) The above exception (Error in python: TypeError DETAIL: a float is required ) was the direct cause of the following exception: File "/usr/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner 35. response = get_response(request) File "/usr/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response 128. response = self.process_exception_by_middleware(e, request) File "/usr/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response 126. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/lib/python3.6/site-packages/django/contrib/admin/options.py" in wrapper 574. return self.admin_site.admin_view(view)(*args, **kwargs) File "/usr/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapped_view 142. response = view_func(request, *args, **kwargs) File "/usr/lib/python3.6/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 44. response = view_func(request, *args, **kwargs) File "/usr/lib/python3.6/site-packages/django/contrib/admin/sites.py" in inner 223. return view(request, *args, **kwargs) File "/usr/lib/python3.6/site-packages/django/contrib/admin/options.py" in change_view 1556. return self.changeform_view(request, object_id, form_url, extra_context) File "/usr/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapper 62. return bound_func(*args, **kwargs) File "/usr/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapped_view 142. response = view_func(request, *args, **kwargs) File "/usr/lib/python3.6/site-packages/django/utils/decorators.py" in bound_func 58. return func.__get__(self, type(self))(*args2, **kwargs2) File "/usr/lib/python3.6/site-packages/django/contrib/admin/options.py" in changeform_view 1450. return self._changeform_view(request, object_id, form_url, extra_context) File "/usr/lib/python3.6/site-packages/django/contrib/admin/options.py" in _changeform_view 1471. obj = self.get_object(request, unquote(object_id), to_field) File "/usr/lib/python3.6/site-packages/django/contrib/admin/options.py" in get_object 719. return queryset.get(**{field.name: object_id}) File "/usr/lib/python3.6/site-packages/django/db/models/query.py" in get 397. num = len(clone) File "/usr/lib/python3.6/site-packages/django/db/models/query.py" in __len__ 254. self._fetch_all() File "/usr/lib/python3.6/site-packages/django/db/models/query.py" in _fetch_all 1179. self._result_cache = list(self._iterable_class(self)) File "/usr/lib/python3.6/site-packages/django/db/models/query.py" in __iter__ 53. results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) File "/usr/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in execute_sql 1064. cursor.execute(sql, params) File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py" in execute 100. return super().execute(sql, params) File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py" in execute 68. return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py" in _execute_with_wrappers 77. return executor(sql, params, many, context) File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py" in _execute 85. return self.cursor.execute(sql, params) File "/usr/lib/python3.6/site-packages/django/db/utils.py" in __exit__ 89. raise dj_exc_value.with_traceback(traceback) from exc_value File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py" in _execute 85. return self.cursor.execute(sql, params) Exception Type: InternalError at /admin/foo/bar/taz/change/ Exception Value: Error in python: TypeError DETAIL: a float is required
Change History (4)
comment:1 by , 7 years ago
comment:2 by , 7 years ago
Resolution: | → needsinfo |
---|---|
Status: | new → closed |
Type: | Uncategorized → Bug |
comment:3 by , 7 years ago
You are correct, the exception was coming from PostgreSQL Foreign Data Wrapper which is also written in Python. Django was just propagating the error. It confused me quite a bit since I had not idea where it was braking from Django's trace. Upon seeing the PostgreSQL log, it was all clear. Just for completeness, this is the error trace in PostgreSQL. Sorry for the hassle.
2018-04-23 18:19:17.913 UTC [30] ERROR: Error in python: TypeError 2018-04-23 18:19:17.913 UTC [30] DETAIL: Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/multicorn-1.3.4.dev0-py2.7-linux-x86_64.egg/multicorn/fsfdw/__init__.py", line 272, in execute return self.items_to_dicts(self.get_items(quals, columns), columns) File "/usr/local/lib/python2.7/dist-packages/multicorn-1.3.4.dev0-py2.7-linux-x86_64.egg/multicorn/fsfdw/__init__.py", line 279, in get_items unicode_(qual.value)) File "/usr/local/lib/python2.7/dist-packages/multicorn-1.3.4.dev0-py2.7-linux-x86_64.egg/multicorn/fsfdw/structuredfs.py", line 373, in from_filename return Item(self, values) File "/usr/local/lib/python2.7/dist-packages/multicorn-1.3.4.dev0-py2.7-linux-x86_64.egg/multicorn/fsfdw/structuredfs.py", line 195, in __init__ self.mtime = datetime.datetime.fromtimestamp(mtime) TypeError: a float is required
comment:4 by , 7 years ago
Resolution: | needsinfo → invalid |
---|
It's not clear to me that Django is at fault. Have you confirmed that and if so, can you explain what the problem is? Is that error coming from PostgreSQL? I'm not familiar with foreign data wrappers.