내 질문은 매우 간단하지만 문제를 해결할 수 없습니다. 저장해야하기 때문에 관리자가 표시 할 때마다 필드를 처리해야합니다. DB에서 다르게관리자가 표시하기 전에 DB에서 전처리 값
예를 들어 사용자가 관리자 (예 : 50, 70 또는 100)에 백분율을 입력해야하지만이 값은 데이터베이스에 0.5, 0.7 또는 1로 저장됩니다. 사용자가 편집 또는 그냥 그 값을 볼 수 있습니다, 그들은 DB에 수레로 저장되었습니다 비록 percetages (정수)로 그들을 다시 표시하기 위해 사전 처리되지 않습니다.
def valid_percentage(value):
if not 0 <= value <= 1:
raise ValidationError(u'Must be a value between 0 and 100')
class PercentageField(models.IntegerField):
def __init__(self, *args, **kwargs):
kwargs['validators'] = kwargs.get('validators', []) + [valid_percentage]
super(PercentageField, self).__init__(*args, **kwargs)
def to_python(self, value):
return None if value is None else int(100 * value)
def get_prep_value(self, value):
return None if value is None else value/100.0
이 그것을 할 것입니다 :
내가 좋아하는 뭔가를 생각했다. 그러나 이것은 데이터를 저장하고 잘못 표시하는 것입니다.
데이터베이스에 정수를 저장하지 않으므로'IntegerField'를 서브 클래스하지 않아야합니다. 대신에'DecimalField' 또는'FloatField'를 사용해보십시오. – Alasdair