如何在 Django Admin 中显示 $(美元符号)?

Mdj*_*n26 3 django format class admin

我怎样才能让它在我的价格变量下我可以自动显示一个 $?因此,它将显示 $999.99,而不是 999.99。我在 Django Admin 中这样做。

这是 admin.py

from django.contrib import admin
from purchaseorders.models import PurchaseOrder


class PurchaseOrderAdmin(admin.ModelAdmin):
    fields = ['product', 'price', 'purchase_date', 'confirmed']
    list_display = ('product', 'price', 'purchase_date', 'confirmed', 'po_number')
admin.site.register(PurchaseOrder, PurchaseOrderAdmin)
Run Code Online (Sandbox Code Playgroud)

这是来自models.py的一点

from django.db import models
import random

class PurchaseOrder(models.Model):
    price = models.FloatField()
Run Code Online (Sandbox Code Playgroud)

kar*_*ikr 5

您可以通过以下几种方式做到这一点:

在中添加自定义属性 PurchaseOrder

class PurchaseOrder(models.Model):
    price = models.FloatField()

    @property
    def dollar_amount(self):
        return "$%s" % self.price if self.price else ""
Run Code Online (Sandbox Code Playgroud)

和参考dollar_amount而不是price

其它的办法

将其添加到 PurchaseOrderAdmin

class PurchaseOrderAdmin(admin.ModelAdmin):
    fields = ['product', 'price', 'purchase_date', 'confirmed']
    list_display = ('product', 'dollar_amount', 'purchase_date', 'confirmed', 'po_number')

    def dollar_amount(self, obj):
        return "$%s" % obj.price if obj.price else ""


admin.site.register(PurchaseOrder, PurchaseOrderAdmin)
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢选项 1,以便我们可以在必须对实际应用程序执行相同操作时重用代码。