Skip to content

["“['x']” value must be a decimal number."] #34

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
lguariento opened this issue Apr 21, 2024 · 3 comments
Open

["“['x']” value must be a decimal number."] #34

lguariento opened this issue Apr 21, 2024 · 3 comments

Comments

@lguariento
Copy link

lguariento commented Apr 21, 2024

Hello,

after upgrading to Django 5.x I am getting errors using all the filters (e.g. SingleNumericFilter and RangeNumericFilter).

No matter what I input, I alwas get this error:

["“['x']” value must be a decimal number."]

where 'x' is any number I put (could be 0, 100, 1000).

Full stack:

Environment:


Request Method: GET
Request URL: .../?e=1&project_number_from=1&project_number_to=6786

Django Version: 5.0.4
Python Version: 3.11.2
Installed Applications:
['admin_numeric_filter',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'admin_auto_filters',
 'mod_wsgi.server',
 'artsdb',
 'choices',
 'import_export',
 'django_select2',
 'djmoney',
 'smart_selects']
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 (most recent call last):
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/fields/__init__.py", line 1805, in to_python
    decimal_value = decimal.Decimal(value)
                    ^^^^^^^^^^^^^^^^^^^^^^

During handling of the above exception (argument must be a sequence of length 3), another exception occurred:
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/contrib/admin/options.py", line 716, in wrapper
    return self.admin_site.admin_view(view)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/utils/decorators.py", line 188, in _view_wrapper
    result = _process_exception(request, e)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/utils/decorators.py", line 186, in _view_wrapper
    response = view_func(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/views/decorators/cache.py", line 80, in _view_wrapper
    response = view_func(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/contrib/admin/sites.py", line 240, in inner
    return view(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/import_export/admin.py", line 667, in changelist_view
    return super().changelist_view(request, extra_context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/import_export/admin.py", line 872, in changelist_view
    return super().changelist_view(request, extra_context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/import_export/admin.py", line 69, in changelist_view
    return super().changelist_view(request, extra_context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/utils/decorators.py", line 48, in _wrapper
    return bound_method(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/utils/decorators.py", line 188, in _view_wrapper
    result = _process_exception(request, e)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/utils/decorators.py", line 186, in _view_wrapper
    response = view_func(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/contrib/admin/options.py", line 1985, in changelist_view
    cl = self.get_changelist_instance(request)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/contrib/admin/options.py", line 864, in get_changelist_instance
    return ChangeList(
           
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/contrib/admin/views/main.py", line 144, in __init__
    self.queryset = self.get_queryset(request)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/contrib/admin/views/main.py", line 547, in get_queryset
    new_qs = filter_spec.queryset(request, qs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/admin_numeric_filter/admin.py", line 97, in queryset
    return queryset.filter(**filters)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/djmoney/models/managers.py", line 207, in wrapper
    queryset = func(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/query.py", line 1476, in filter
    return self._filter_or_exclude(False, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/query.py", line 1494, in _filter_or_exclude
    clone._filter_or_exclude_inplace(negate, args, kwargs)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/query.py", line 1501, in _filter_or_exclude_inplace
    self._query.add_q(Q(*args, **kwargs))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1613, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1645, in _add_q
    child_clause, needed_inner = self.build_filter(
                                 
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1559, in build_filter
    condition = self.build_lookup(lookups, col, value)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1389, in build_lookup
    lookup = lookup_class(lhs, rhs)
             ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/lookups.py", line 30, in __init__
    self.rhs = self.get_prep_lookup()
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/lookups.py", line 88, in get_prep_lookup
    return self.lhs.output_field.get_prep_value(self.rhs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/fields/__init__.py", line 1829, in get_prep_value
    return self.to_python(value)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/py_ptracker/lib/python3.11/site-packages/django/db/models/fields/__init__.py", line 1807, in to_python
    raise exceptions.ValidationError(
    ^

Exception Type: ValidationError at /admin/artsdb/project/
Exception Value: ["“['1']” value must be a decimal number."]
@lguariento lguariento changed the title ["“['0']” value must be a decimal number."] ["“['x']” value must be a decimal number."] Apr 21, 2024
@loeeess
Copy link

loeeess commented Feb 4, 2025

Hi,

I'm also having this issue since Django 5 and hope this can be fixed. I noticed there's already an open PR that addresses this, any chance it could be reviewed and merged?

Thanks for all the work!

@lukasvinclav
Copy link
Owner

@loeeess I can not promise anything right now. Anyway, I'm working on https://github.com/unfoldadmin/django-unfold where these filters are already implemented and they are working for 5.x

@loeeess
Copy link

loeeess commented Feb 4, 2025

Thanks for the quick reply. No problem, I'll have a look at django unfold 🙏🏻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants