Я создаю таблицу и окрашиваю текст в зеленый или красный цвет в зависимости от значения + или - есть ли способ удалить знак из числа - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь убрать знак «-» из моего номера, когда он отображается в формате html, потому что он мне больше не нужен, так как вместо этого у меня есть цветовая кодировка текста. Возможно ли это, и если да, то как можно убрать знак -, если он есть?

Таблица цикла ниже

{% for sale in page_obj %}
            <tr>
                <td>{{sale.transaction.currency}}</td>
                <td>{{sale.amount_sold}}</td>
                <td>{{sale.amount_per_coin_sold}}</td>
                <td>{{sale.total_price_sold}}</td>
                <td>{{sale.transaction.amount_per_coin}}</td>
                <td>{{sale.date_sold|date:"j N Y"}}</td>
                {% if sale.profit_loss < 0 %}
                    <td style = "color:red">{{ sale.profit_loss }}</td>
                {% else %}
                <td style = "color:green">{{ sale.profit_loss }}</td>
                {% endif %}  
                {% if sale.profit_loss_percent < 0 %}
                <td style = "color:red">{{sale.profit_loss_percent}}</td>
                {% else %}
                <td style = "color:green">{{sale.profit_loss_percent}}</td>
                {% endif %}
                 <td><a href="{% url 'sale-detail' sale.id %}">View</a></td>
            </tr>
            {% endfor %}

Ответы [ 4 ]

0 голосов
/ 26 апреля 2019

Вы можете создать новую функцию внутри вашей модели, например:

def get_absolute_profit_loss(self):
    return abs(self.profit_loss)

И тогда внутри шаблона вы можете сделать это:

{% if sale.profit_loss < 0 %}
     <td style = "color:red">{{ sale.get_absolute_profit_loss }}</td>
{% else %}
     <td style = "color:green">{{ sale.profit_loss }}</td>
{% endif %}       
0 голосов
/ 26 апреля 2019

Вы можете написать фильтр , чтобы получить абсолютное значение.

@register.filter
def abs(value):
    '''
    Returns the absolute value of a number without the sign
    '''
    return abs(value)

Тогда в вашем шаблоне вы можете применить фильтр к вашему значению

{{ sale.profit_loss|abs }}

Если вы не хотите писать свой собственный фильтр, в модуле django-mathfilters уже есть фильтр abs.

0 голосов
/ 26 апреля 2019

Вы можете создать пользовательский фильтр, как описано в других ответах, или вы можете добавить методы к вашей модели, например

def absolute_profit_loss(self):
    return abs(self.profit_loss())
0 голосов
/ 26 апреля 2019

Вы можете написать собственный шаблонный фильтр, который вызывает abs().

@register.filter
def absolute(val):
    return abs(val)

И использовать его:

{% load my_template_tags %}
{% if sale.profit_loss < 0 %}
    <td style = "color:red">{{ sale.profit_loss|absolute }}</td>
{% else %}
...