Как по-другому отобразить поле объекта модели django на html-странице?

У моего объекта модели есть IntegerField, но я хочу иметь возможность отображать его по-разному на моей html-странице, например, допустим, объект IntegerField - 500000 я хочу отобразить его как 500 000$ на моей html-странице. Поэтому добавьте пробел перед last 3 number и добавьте $ в конце.

У меня есть модель с IntegerField, которая выглядит следующим образом

class Listing(models.Model):
    listing_price = models.IntegerField(max_length=100)

В моем представлении я извлекаю модели следующим образом

def home(request):
    listing_object = Listing.objects.all()
    context = {
        "listing_object": listing_object,
    }
    return render(request, "main/index.html", context)

Я отображаю данные следующим образом

{% for listing in listing_new_object %}
{{listing.listing_price}}
{% endfor %}

У вас есть два варианта:

  • Манипулируйте контекстом, чтобы составить список кортежей:
context = {
    "listing_object": [(listing, f'{listing.listing_price:,}'.replace(",", " ")) for listing in listing_object]
}

затем в вашем шаблоне:

{% for _, price in listing_new_object %}
{{price}}
{% endfor %}
  • Другой вариант - сделать фильтр шаблонов Django
  • .
{{ listing.listing_price|price_format }}
from django import template

register = template.Library()


def price_format(value):
    return f'{value:,}'.replace(",", " ")

register.filter(price_format)
Вернуться на верх