如何在Django中添加一个货币字段?
有时候,我们需要在网站中添加与钱有关的数据,例如薪水、费用或收入。Django提供了整数字段,但很多时候,它并不能按照我们的要求工作。因此,为了处理货币字段,我们可以使用一个第三方库,它将在我们的模型中添加货币字段。
创建一个项目和一个应用程序,我将它们命名为 “MoneyFieldDemo” 和 “myapp” 。
设置基本内容,例如 urls 和 INSTALLED_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, default_currency='USD') #这是货币字段
在这里,我们创建了一个模型,其中有两个值,员工姓名和他的美元薪水。
在 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请求。