Mdjon26
Mdjon26

Reputation: 2255

How to display $ (dollar signs) in Django Admin?

How can I make it so under my price variable I can automatically have it display a $? So, instead of having 999.99, it will display $999.99. I am doing this in Django Admin.

Here is 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)

And here is the bit from models.py

from django.db import models
import random

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

Upvotes: 3

Views: 1784

Answers (1)

karthikr
karthikr

Reputation: 99650

You can do it in a couple of ways:

Add a custom property in PurchaseOrder

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

    @property
    def dollar_amount(self):
        return "$%s" % self.price if self.price else ""

and reference dollar_amount instead of price

Another way

Add it in the 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)

I would personally prefer option 1 so that we could reuse the code if the same has to be done with the actual app.

Upvotes: 5

Related Questions