Как лучше передавать преобразованные значения модели Django в контекст?

У меня есть модель Poller, которая имеет кучу целочисленных полей. У меня есть функция convert_thousands, которая преобразует целочисленные числа в короткие строки следующим образом:

convert_thousands(1300000) # Returns '1,3 m' etc.

Как лучше всего преобразовать все целочисленные поля и передать их в контекст? Сейчас я делаю это одно за другим...:

Foo = convert_thousands(poller.integerfield_one)
Bar = convert_thousands(poller.integerfield_two)
[..]

    context = {
        'poller': poller,
        'Foo': Foo,
        'Bar': Bar
        [..]
    }

Желаемый результат будет выглядеть примерно так

[..]
    context = {
        'poller': poller,
        'converted_strings': converted_strings
    }

# and render in the template by {{ converted_strings.integerfield_one }}

Здесь вы можете использовать словарное понимание:

data = {
    'Foo': poller.integerfield_one,
    'Bar': poller.integerfield_two
}

# …

context = {
    'poller': poller,
    'converted_strings': { k: convert_thousands(v) for k, v in data.items() },
    # …
}

или если они нужны в контексте (а значит, не в конкретном элементе converted_strings), мы можем работать с распаковкой словаря :

data = {
    'Foo': poller.integerfield_one,
    'Bar': poller.integerfield_two
}

# …

context = {
    'poller': poller,
    **{ k: convert_thousands(v) for k, v in data.items() },
    # …
}

Тогда вы можете изобразить это с помощью {{ Foo }} и {{ Bar }}.

Вернуться на верх