Django: How to use float precision instead of double precision in MySQL

models.FloatField creates a double in MySQL. Is it possible, and how, to create a float precision field instead of double precision?

The justification is similar to that of having SmallIntegerField.


There are a few options to do this, but I don't understand why you would want to.

  1. Change it in the database, won't work when recreating the tables but Django won't do a manual cast so if the database changes, so do the results.
  2. Create a custom fieldtype (i.e. inherit FloatField and change get_internal_type() so it returns something like SinglePrecisionFloatField. After that you will also need to create your own database backend and add your custom type to creation.DatabaseCreation.data_types (source:
  3. Change every FloatField to single precision. Like above you would have to create your own database backend and/or change the FloatField implementation in the current one.

Well there is a better way than that and a much easier one. I also wanted the same thing with my db, when I came across the following db_type() method in django.

First, you need to create a custom Field in django by inheriting the Field class

class customFloatField(models.Field): 
    def db_type(self,connection):
        return 'float'

then you could use this as any other model field in your model class

number = customFloatField(null=True,blank=True)

I tried and this does work for me in MySQL. To change it as per the connection type, you would have to check the connection setting in an if statement and change accordingly.

More about this is mentioned in

Need Your Help

jQuery UI dialog onClick event

jquery jquery-ui jquery-ui-dialog

i'm trying to open a dialog box with an onclick command, but i'm having no luck whatsoever. I've tried everything and I just can get it to work.

Handling large data files

java design architecture

Lets say I have a very big file having data. A parser parses it and keeps the data in the following class: