поле валюты django

#django #forms #model

#django #формы #Модель

Вопрос:

Я создаю приложение 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:

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

Посмотрите на эту реализацию MoneyField, чтобы найти другие методы, которые вам нужны.

Комментарии:

1. Я опробовал это денежное поле. есть Error: No module named contrib.django идеи, где это найти?

2. Похоже, что это часть того проекта. Вы установили пакет, чтобы все файлы были доступны? Тоесть pip install -e git http://github.com/poswald/python-money.git@0.0.1#egg=python-money