Opened 7 years ago

Closed 3 years ago

#15678 closed New feature (needsinfo)

Different behaviour for DecimalField on MySQL and SQLite

Reported by: max@… Owned by: nobody
Component: Database layer (models, ORM) Version: 1.3
Severity: Normal Keywords: sqlite, mysql, decimalfield
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no


Consider the following model:

class Product(models.Model):
    title   = models.CharField('Title', max_length=250)
    price   = models.DecimalField('Price', max_digits=9, decimal_places=2, default=0)

If you create or modify an object in the admin using MySQL and set the price to "0" with will automatically become "0.00".

But if you do the same using SQLite3, it will allow it to stay "0".

I know that the two backends doesn't provide the same features support and both store DecimalFiels differently, but couldn't the ORM deal with it transparently ?

Change History (7)

comment:1 Changed 7 years ago by Luke Plant

Type: New feature

comment:2 Changed 7 years ago by Luke Plant

Severity: Normal

comment:3 Changed 7 years ago by Jacob

Triage Stage: UnreviewedAccepted

I'm on the fence here - different dbs are different. Is there a compelling argument that we should bother fixing this?

comment:4 Changed 7 years ago by anonymous

Well I think Django should abstract databases inconsistencies when it's possible.. since we are perfectionists with deadlines :>

Furthermore in this case we are talking about the representation of a specific data type. So I think it would make sense to handle it with input validation, I don't think that it counts as emulating a missing database feature.

comment:5 Changed 6 years ago by Aymeric Augustin

UI/UX: unset

Change UI/UX from NULL to False.

comment:6 Changed 6 years ago by Aymeric Augustin

Easy pickings: unset

Change Easy pickings from NULL to False.

comment:7 Changed 3 years ago by Tim Graham

Resolution: needsinfo
Status: newclosed

I don't understand where the discrepancy is that needs to be fixed.

Note: See TracTickets for help on using tickets.
Back to Top