2015-10-10 2 views
0

Когда я пытаюсь выполнить следующий расчет:Исключение при получении данных из формы Django

self.total * ((100 + self.tax)/100) 

я получаю:

unsupported operand type(s) for +: 'int' and 'tuple' 

Я получаю значение с:

offer = offer_form.save(commit=False) 
offer.tax = offer_form.cleaned_data['tax'].value, 

I предполагается, что значение value должно дать мне значение формы, которое в этом случае является ChoiceField. Я использовал для создания объекта, как в следующем, и он используется для работы:

offer = Offer(
    ... 
    tax=offer_form.cleaned_data['tax_model'].value, 
    ... 
) 

models.py

Налогового поля в предложении:

tax = models.DecimalField(default=0, max_digits=5, decimal_places=2, validators=[MinValueValidator(0),MaxValueValidator(100)]) 

Налогового объекте я выбираю из ChoiceField:

value = models.DecimalField(max_digits=5, decimal_places=2, validators=[MinValueValidator(0),MaxValueValidator(100)]) 

Когда я печатаю offer_form.cleaned_data ['tax']. Значение это то, что я получаю:

65.00 

Мой вопрос: зачем он работал, когда я использовал метод Instance(), а не когда я присваиваю значение переменной. А также, как я могу заставить его работать?

ответ

3

У вас есть лишняя запятая, здесь:

offer.tax = offer_form.cleaned_data['tax'].value, 

, что делает его кортеж ..

+0

Я не могу поверить, что я провел 2 часа с этой глупой ошибкой синтаксиса. –

+1

случается с лучшими из нас ;-) – thebjorn

Смежные вопросы