DjangoのORM (Object-Relational Mapping) は、データベースとの連携を容易にし、データベース操作をPythonコードで行うための強力なツールです。DecimalFieldメソッドは、数値フィールドをデータベースモデルに追加する際に使用されます。この記事では、DecimalFieldメソッドの使い方を具体的なコード例を交えて説明します。
目次
DecimalFieldメソッドとは?
DecimalFieldメソッドは、データベーステーブル内の数値データを表現するためのフィールドタイプです。通常、金額、価格、評価などの精度が必要な数値データを格納する際に使用されます。DecimalFieldは、PythonのDecimal型として表現され、浮動小数点数よりも精度が高く、誤差が発生しにくい特徴があります。
DecimalFieldメソッドの基本的な使い方
DecimalFieldメソッドを使用して、データベースモデルに数値フィールドを追加する方法を以下に示します。
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(max_digits=10, decimal_places=2)
この例では、ProductモデルにpriceというDecimalFieldを追加しています。max_digits
は総桁数を、decimal_places
は小数点以下の桁数を指定します。
DecimalFieldメソッドの具体的なコード例
DecimalFieldメソッドをさまざまなケースで使うコード例を紹介します。
1. 送料計算
class ShippingCost(models.Model):
weight = models.DecimalField(max_digits=5, decimal_places=2) # 重量(最大5桁、小数点2桁)
cost = models.DecimalField(max_digits=6, decimal_places=2) # 送料(最大6桁、小数点2桁)
2. 評価スコア
class ProductReview(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
rating = models.DecimalField(max_digits=3, decimal_places=1) # 評価(最大3桁、小数点1桁)
3. 貯金残高
class SavingsAccount(models.Model):
account_number = models.CharField(max_length=20)
balance = models.DecimalField(max_digits=10, decimal_places=2) # 残高(最大10桁、小数点2桁)
4. 購入履歴
class PurchaseHistory(models.Model):
customer = models.ForeignKey(User, on_delete=models.CASCADE)
total_amount = models.DecimalField(max_digits=10, decimal_places=2) # 合計金額(最大10桁、小数点2桁)
これらのコード例では、DecimalFieldメソッドを異なる用途で使用しています。max_digits
とdecimal_places
を適切に設定して、データベースモデルに数値データを正確に格納できます。
Django ORMのDecimalFieldメソッドは、数値データを扱う際に非常に便利なツールです。適切な設定で使用することで、精度の高い数値データの格納と操作が可能となります。