models.FloatField
は、MySQLでdoubleを作成します。
倍精度の代わりに浮動小数点精度のフィールドを作成することはできますか?Django:MySQLで倍精度の代わりにfloat precisionを使用する方法
justificationは、SmallIntegerFieldを持つものと同様です。
models.FloatField
は、MySQLでdoubleを作成します。
倍精度の代わりに浮動小数点精度のフィールドを作成することはできますか?Django:MySQLで倍精度の代わりにfloat precisionを使用する方法
justificationは、SmallIntegerFieldを持つものと同様です。
これを行うにはいくつかの選択肢がありますが、なぜあなたが望むのか分かりません。
SinglePrecisionFloatField
のようなものを返すFloatField
を継承し、get_internal_type()
を変更した後、あなたはまた、独自のデータベースバックエンドを作成し、creation.DatabaseCreation.data_types
にカスタムタイプを追加する必要があること(ソースを作成します。http://code.djangoproject.com/browser/django/trunk/django/db/backends/mysql/creation.py)FloatField
。もし上記のように、独自のデータベースバックエンドを作成し、および/または現在の1でFloatField
実装を変更する必要があります。まあそれよりも良い方法とはるかに簡単に1がある。私はまた、私のデータベースで同じことを望んでいたとき、私はf djangoのollowing db_type()メソッド
まず、あなたが
class customFloatField(models.Field):
def db_type(self,connection):
return 'float'
は、あなたが、私が試した
number = customFloatField(null=True,blank=True)
モデルクラスで、他のモデルフィールドとしてこれを使用することができFieldクラスを継承することにより、ジャンゴのカスタムフィールドを作成する必要がありますこれはMySQLでうまく動作します。接続タイプごとに変更するには、ifステートメントで接続設定を確認し、それに応じて変更する必要があります。
この詳細については、https://docs.djangoproject.com/en/dev/howto/custom-model-fields/
ここに記載されています。あなたを買うのは何ですか?ディスク容量は安いです。 – duffymo
@duffymo - 私の場合は、数十のフロートカラムと何百万ものエントリがあるので、ダブルからフロートへ移動するとdbサイズが大幅に縮小され、クエリ効率が向上します – Jonathan
まだ簡単です。浮動列の「数十」?エントリの "何百万"?私はそれがあなたが想像している効果を持つだろうとは思っていません。これがそうであると言うデータはどこにありますか?それはコストの価値がないマイクロ最適化です。大規模なデータベースのサイズは、テラバイトです。あなたのものでなければ、もっと生産的な何かをするべきだと言いたい。 – duffymo