DjangoでMoneyフィールド(金額フィールド)を追加する方法を徹底解説
Webサイトを開発していると、給与や料金、収入といった金額に関するデータを扱う場面がよくあります。Djangoには標準で整数型のフィールドが用意されていますが、金額データの処理には必ずしも適していません。そこで便利なのが、サードパーティ製ライブラリ「django-money」です。このライブラリを使えば、通貨情報付きのMoneyフィールドをモデルに簡単に追加できます。
この記事では、django-moneyを使ってDjangoモデルに金額フィールドを実装する手順を、サンプルコードとともにわかりやすく解説します。
事前準備:プロジェクトとアプリの作成
まずはDjangoプロジェクトとアプリを作成しましょう。ここでは、プロジェクト名を「MoneyFieldDemo」、アプリ名を「myapp」とします。
続いて、urls.pyやINSTALLED_APPSなどの基本設定を行っておきます。
django-moneyのインストール
以下のコマンドでライブラリをインストールします。
pip install django-money
次に、settings.pyに以下の行を追加して、アプリを登録します。
INSTALLED_APPS += ["djmoney"]
実装例
1. urls.py の設定
アプリのurls.pyに、以下のコードを追加します。
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name="home"),
]
ここでは、HTMLページを表示するためのURLエンドポイントをシンプルに定義しています。
2. テンプレート(home.html)の作成
templatesフォルダ内のhome.htmlに、以下のコードを記述します。
<!DOCTYPE html>
<html>
<head>
<title>
TUT
</title>
</head>
<body>
<h2>Hi</h2>
<form action="/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
</body>
</html>
これはフロントエンドとして表示するHTMLファイルです。フォームから金額データを送信できるようになっています。
3. models.py にMoneyフィールドを定義
models.pyに、以下のコードを追加します。
from django.db import models
from djmoney.models.fields import MoneyField
# Create your models here.
class Data(models.Model):
Name = models.CharField(max_length=100)
salary = MoneyField(max_digits=14, decimal_places=2, default_currency='USD') # これがMoneyフィールド
ここでは、「従業員名」と「USD建ての給与」という2つのフィールドを持つモデルを作成しました。MoneyFieldの主な引数は以下の通りです。
- max_digits:金額全体の最大桁数
- decimal_places:小数点以下の桁数
- default_currency:デフォルトの通貨コード(ここではUSD)
なお、default_currencyには「JPY」「EUR」など任意のISO通貨コードを指定できます。
4. views.py でフォームを処理
views.pyに、以下のコードを追加します。
from django.shortcuts import render
from django import forms
from .models import Data
# Create your views here.
class SalaryForm(forms.ModelForm):
class Meta:
model = Data
fields = "__all__"
def home(request):
if request.method == 'POST':
form = SalaryForm(request.POST)
if form.is_valid():
form.save()
else:
form = SalaryForm()
return render(request, 'home.html', {'form': form})
views.pyの処理は特別に複雑なものではありません。ModelFormを作成し、それをテンプレートにレンダリングするとともに、POSTリクエストを受け取ってデータを保存するだけのシンプルな構成です。
実行結果
サーバーを起動してページにアクセスすると、従業員名と給与(USD)を入力できるフォームが表示されます。金額を入力して送信すれば、通貨情報付きの状態でデータベースに保存されます。

このように、django-moneyを活用することで、通貨単位を明確に管理できる金額フィールドを簡単に実装できます。多通貨対応やフォーマット表示など、金額データを本格的に扱いたい場合にぜひ活用してみてください。
-
DjangoプロジェクトにDebug Toolbar(デバッグツールバー)を導入する方法
Django Debug Toolbarは、データベースクエリの確認やWebサイトの読み込み速度の計測など、さまざまなデバッグ作業に活用できる強力なツールです。開発者の間で非常に人気が高く、多くのプロジェクトで採用されています。この記事では、その具体的な導入手順をステップごとに解説します。 実装例 まず、「myapp」という名前のアプリを作成しておきましょう。 1. django-debug-toolbarのインストール 最初に、django-debug-toolbarをインストールします。 pip install django-debug-toolbar 2. INSTALLED_APPSへ
-
Tkinterで画像を追加・表示する方法を解説!Pillowとfiledialogの使い方
画像は、あらゆるアプリケーションにおいて非常に有用な要素のひとつです。Pythonでは、Pillow(PIL)パッケージを利用することで、Tkinterアプリケーション内でも簡単に画像を扱うことができます。画像の読み込みや抽出、画像ペインの設定など、便利な機能が多数用意されています。 サンプルコード:ダイアログで選択した画像を表示する 以下の例では、ユーザーがファイルダイアログから画像を選択し、その画像をLabelウィジェットを使ってウィンドウ上に表示します。 #Tkinterライブラリをインポート from tkinter import * from tkinter import ttk