ช่วงนี้กำลังหัด newforms ใน Django ซึ่งเป็นของใหม่ที่ยังไม่สมบูรณ์ หลักการดี (ดันไปคล้าย Drupal) แต่เนื่องจากยังขาดโน่นขาดนี่อีกเลย ถ้าใช้ตอนนี้ก็อาจจะต้องออกแรงกันมากหน่อย คิดซะว่าออกกำลังกายวันละนิดจิตแจ่มใส เร่ิมต้นกันด้วย FloatField ที่ไม่รู้ว่าหายไปได้ยังไง สงสัยไม่มีใครใช้ Float กันซักเท่าไหร่ บังเอิญผมอยากใช้แต่หาไม่เจอ ก็เขียนเองตามระเบียบ
from django.utils.translation import gettext from django.core import validators from django.newforms import Field from django.newforms.util import ValidationError __all__ = ( 'FloatField', ) EMPTY_VALUES = (None, '') class FloatField(Field): def __init__(self, max_digits=None, decimal_places=None, *args, **kwargs): self.max_digits, self.decimal_places = max_digits, decimal_places super(FloatField, self).__init__(*args, **kwargs) def clean(self, value): """ Validates that float() can be called on the input. Returns the result of float(). Returns None for empty values. """ super(FloatField, self).clean(value) if value in EMPTY_VALUES: return None try: value = float(value) except (ValueError, TypeError): raise ValidationError(gettext(u'Enter a float number.')) v = validators.IsValidFloat(self.max_digits, self.decimal_places) try: v(value, None) except validators.ValidationError, e: raise ValidationError(gettext(u'Enter a float number.')) return value
แค่นี้แหละจบง่ายๆ จะได้เอาไปลองใช้ด้วยตัวเอง
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น