如何在 Django 中添加货币字段?


有时候,我们可能需要在网站中添加与金钱相关的资料,比如工资、费用或收入。Django 提供了一个整数字段,但它很多时候不会像我们希望的那样工作。所以,对于处理金钱字段,我们可以使用一个第三方库,它会将金钱字段添加到我们的模型中。

新建一个项目和一个应用,我将它们命名为“MoneyFieldDemo”"myapp“。

设置基本内容,如urlINSTALLED_APPS。

并且,安装一个库 −

pip install django-money

settings.py中添加以下代码 −

INSTALLED_APPS+= ["djmoney"]

示例

在应用的**urls.py**中,添加以下代码 −

from django.urls import path
from . import views

urlpatterns = [
   path('', views.home,name="home"),
]

在此,我们只需定义url端点,它会渲染 HTML。

在模板文件夹的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 文件。

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, defa
ult_currency='USD') #This is money field

在此,我们创建了一个模型,其中有两个值:员工姓名和以美元计的工资。

view.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 中没有花哨的东西。我们在其中创建了一个表单,然后只进行渲染并处理 post 请求。

输出

更新于: 2021 年 8 月 25 日

2K+ 浏览量

启动您的职业生涯

完成课程即可获得认证

立即开始
广告
© . All rights reserved.