Opened 4 weeks ago

Last modified 4 weeks ago

#36574 closed Bug

Regression: DecimalField values are no longer quantized before written to the DB — at Version 1

Reported by: Aaron Mader Owned by:
Component: Database layer (models, ORM) Version: 5.2
Severity: Normal Keywords: decimal_places
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Aaron Mader)

Steps to reproduce:

  1. Create a new project using the mysql backend
  2. Create this model:
    class Apple(models.Model):
        weight = models.DecimalField(max_digits=4, decimal_places=1)
    
  3. Create an instance of this record with input outside of the quantization limits
    from decimal import Decimal
    Apple.objects.create(
        weight = Decimal("1.01"),
    )
    
  4. Attempt to fetch the record by the (expected) adjusted value
    from decimal import Decimal
    Apple.objects.filter(
        weight = Decimal("1.0"),
    )
    

Result:
With django 5.2.0, the filter query fails with 0 results.
With django 5.1.11, the filter query success, returning the created record.

Specifically, this change in behaviour was introduced in django 5.2.0, with prior versions of django quantizing the input value (1.01) to an acceptable value (1.0) before writing the value to the database.
I believe that change was introduced in pull request: https://github.com/django/django/pull/18895

Change History (1)

comment:1 by Aaron Mader, 4 weeks ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top