#django #forms #model
#django #формы #Модель
Вопрос:
Я создаю приложение django, для которого требуются некоторые операции с валютой. Я пытаюсь упростить ввод валют и проверить, что вводятся фактические валюты, а не просто десятичные значения.
В моей форме поле отображается нормально, но там возникают некоторые трудности с принятием допустимых значений. Вот мои ошибки в полях.
-
Сбивает с толку — Если
max_digits=10
как это возможно?entered: 50000.00 error: Ensure that there are no more than 5 digits in total.
-
Значение вне диапазона — как это выходит за пределы диапазона?
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