Как лучше передавать преобразованные значения модели 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 }}
.