如何在 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.