如何使用 django-money 获取没有“$”的货币值?

sar*_*n3h 6 python django django-models dollar-sign django-money

我使用django-money,然后我在模型中有price字段,如下所示:MoneyField()Product

# "app/models.py"

from django.db import models
from djmoney.models.fields import MoneyField
from decimal import Decimal
from djmoney.models.validators import MaxMoneyValidator, MinMoneyValidator

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = MoneyField( # Here
        max_digits=5, decimal_places=2, default=0, default_currency='USD',
        validators=[
            MinMoneyValidator(Decimal(0.00)), MaxMoneyValidator(Decimal(999.99)),
        ]
    )
Run Code Online (Sandbox Code Playgroud)

然后,在获取价格时views.py如下图所示:

# "app/views.py"

from app.models import Product
from django.http import HttpResponse

def test(request):
    print(Product.objects.all()[0].price) # Here
    return HttpResponse("Test")
Run Code Online (Sandbox Code Playgroud)

我在控制台上得到的价格$如下所示:

$12.54
Run Code Online (Sandbox Code Playgroud)

$现在,如果没有如下所示,我怎样才能得到价格呢?

12.54
Run Code Online (Sandbox Code Playgroud)

sol*_*oke 12

您正在处理一个Money对象(请参阅此处)。该对象有一个amount属性可以为您提供小数金额:

>>> price.amount
Decimal('12.54')
Run Code Online (Sandbox Code Playgroud)

int如果您愿意,您可以转换为它。