В моей модели процентные данные хранятся в виде дробных значений в диапазоне 0,0-1,0.Поскольку они представляют собой проценты, я хочу, чтобы пользователь просматривал и редактировал значения в диапазоне 0,0-100,0.
Какой предпочтительный способ преобразования данных между его сохраненным значением и отображаемое значение ?Обратите внимание, что формат зависит от другой переменной экземпляра.
Моя модель выглядит следующим образом:
class MyModel(models.Model):
format = models.CharField(choices=(('percentage', 'Percentage'), ('absolute', 'Absolute'))
my_value = models.FloatField()
def _get_my_value_display(self):
if self.format == 'percentage':
return self.my_value * 100
else:
return self.my_value
def _set_my_value_display(self, v):
if self.format == 'percentage':
return v / 100
else:
return self.my_value
my_value_display = property(_get_my_value, _set_my_value)
В форме я пытался использовать свойство display в качестве поля формы, но это не'работа (неизвестные поля (my_value_display) указаны для MyModel):
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ('my_value_display', )