Django:如何在MySQL中使用浮点精度而不是双精度

时间:2010-12-01 13:38:44

标签: mysql django orm

models.FloatField在MySQL中创建了一个双 是否可以创建浮点精度字段而不是双精度?

justification类似于拥有SmallIntegerField。

2 个答案:

答案 0 :(得分:3)

那么有一个比这更好的方法,也更容易一个。当我在django中遇到以下db_type()方法时,我也想和我的db一样。

首先,您需要通过继承Field类

在django中创建自定义Field
class customFloatField(models.Field): 
    def db_type(self,connection):
        return 'float'

然后您可以将其用作模型类中的任何其他模型字段

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

我试过,这在MySQL中对我有用。要根据连接类型进行更改,您必须在if语句中检查连接设置并相应地进行更改。

https://docs.djangoproject.com/en/dev/howto/custom-model-fields/

中提到了有关此内容的更多信息

答案 1 :(得分:2)

有几个选项可以做到这一点,但我不明白你为什么要这样做。

  1. 在数据库中更改它,在重新创建表时不起作用,但Django不会进行手动转换,因此如果数据库发生更改,结果也会发生变化。
  2. 创建自定义字段类型(即继承FloatField并更改get_internal_type(),以便返回SinglePrecisionFloatField之类的内容。之后,您还需要创建自己的数据库后端并添加自定义类型到creation.DatabaseCreation.data_types(来源:http://code.djangoproject.com/browser/django/trunk/django/db/backends/mysql/creation.py
  3. 将每FloatField更改为单精度。如上所述,您必须创建自己的数据库后端和/或更改当前的FloatField实现。