0
在我的模型中,百分比數據作爲小數值存儲在0.0-1.0範圍內。由於它們是百分比,我希望用戶查看和編輯0.0-100.0範圍內的值。Django ModelForm可以顯示存儲值的自定義表示嗎?
在存儲值和顯示值之間轉換數據的首選方式是什麼?請注意,格式取決於另一個實例變量。
我的模型看起來是這樣的:
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)
在表單中,我試圖用顯示屬性爲表單域,但不工作(指定未知領域(S)(my_value_display)爲MyModel):
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ('my_value_display',)
如果格式是有條件的,並且基於'format'實例變量(如示例中),會發生什麼? – Frederik
在這種情況下,可以通過覆蓋表單的「乾淨」方法來實現表單的清理部分。我真的不知道小部件怎麼樣。也許創建兩個不同的'ModelForm'類,然後在模型上有一個方法根據格式的值檢索正確的類。 – koniiiik
你在渲染功能中缺少「return」關鍵字 –