django CurrencyField - PullRequest
       5

django CurrencyField

0 голосов
/ 14 ноября 2011

Я создаю приложение django, которое требует ввода некоторых валют. Я пытаюсь упростить ввод валют и проверку ввода действительных валют, а не просто десятичных значений.

В моем виде поле отображается нормально, но там есть некоторые трудности с принятием допустимых значений. Вот мои полевые ошибки.

  1. Запутано - Если max_digits=10 как это возможно?

    entered: 50000.00 error: Ensure that there are no more than 5 digits in total.

  2. Значение вне диапазона - как это выходит за пределы диапазона?

    entered: 50000 error: Out of range value for column 'amount' at row 1

Есть идеи, что здесь происходит?

-------- fields.py -------

class CurrencyField(models.DecimalField):
    __metaclass__ = models.SubfieldBase

    def to_python(self, value):
        try:
           return super(CurrencyField, self).to_python(value).quantize(Decimal("0.01"))
        except AttributeError:
           return None

-------- model.py ---------

class Purchase(models.Model):
    customer = models.ForeignKey(Customer, unique=False, editable=False)
    dtgPurchase = models.DateField('Date Purchased')
    amount = CurrencyField(max_digits=10, decimal_places=2, blank=True)

-------- forms.py ---------

class PurchaseForm(forms.ModelForm):
    class Meta:  
        model = Purchase
        fields = ('dtgPurchase', 'amount',)

1 Ответ

0 голосов
/ 15 ноября 2011

Я не знаю, опубликовали ли вы весь код для своего класса CurrencyField, но если это ваша полная реализация, в ней отсутствуют некоторые важные методы.

Посмотрите на эту реализацию MoneyField для других методов вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...