Я пытаюсь выполнить несколько простых вычислений в методе def clean после проверки (в основном, выполняя конвертирование в евро цены восстановленного продукта в Великобритании на лету). Я продолжаю получать ошибку TypeError.
Полная ошибка:
Невозможно преобразовать {'product':, 'invoice':, 'order_discount': Decimal ("0.00"), 'order_price': {...}, 'order_adjust': None, 'order_value': None, '' DELETE: False, id: 92, количество: 8} до десятичного числа
поэтому я предполагаю, что django проходит через всю форму cleaned_data в метод Decimal. Не знаю, где я ошибаюсь - код, с которым я работаю:
def clean_order_price(self):
cleaned_data = self.cleaned_data
data = self.data
order_price = cleaned_data.get("order_price")
if not order_price:
try:
existing_price = ProductCostPrice.objects.get(supplier=data['supplier'], product_id=cleaned_data['product'], is_latest=True)
except ProductCostPrice.DoesNotExist:
existing_price = None
if not existing_price:
raise forms.ValidationError('No match found, please enter new price')
else:
if data['invoice_type'] == 1:
return existing_price.cost_price_gross
elif data['invoice_type'] == 2:
exchange = EuroExchangeRate.objects.latest('exchange_date')
calc = exchange.exchange_rate * float(existing_price.cost_price_gross)
calc = Decimal(str(calc))
return calc
return cleaned_data
Если накладная относится к типу 2 (накладная в евро), то система должна получить последний курс обмена и применить его к соответствующей цене в британских фунтах, полученной для получения результата в евро.
Должно ли выполнение десятичного преобразования быть проблемой в методе def clean?
Спасибо