У меня есть модель Django WalletJournal, которая имеет ряд полей, десятичные значения, и определение примера класса модели выглядит следующим образом:Джанго Object Получить десятичный Match
balance = models.DecimalField(max_digits=20,decimal_places=2)
Соответствующий столбец MySQL определяются как:
`balance` decimal(20,2) NOT NULL,
И при извлечении строки по ее идентификатору и возврате баланса оно выглядит правильно.
>>> WalletJournal.objects.get(id=855).balance
Decimal('1295599062.45')
>>>
Я пытаюсь использовать get_or_create для добавления записей и сохранить дубликаты до минимума, но я вижу некоторые очень Штанге поведение на ладить знаков после запятой. Пытаясь соответствовать вид любой строки или десятичная не возвращает результаты:
>>> WalletJournal.objects.get(balance='1295599062.45')
DoesNotExist: WalletJournal matching query does not exist.
>>> WalletJournal.objects.get(balance=Decimal(str('1295599062.45')))
DoesNotExist: WalletJournal matching query does not exist.
Но если я матч с помощью __iexact
я получаю правильный результат:
>>> WalletJournal.objects.get(balance__iexact='1295599062.45')
<WalletJournal: joeb - 1XXXX00 - Acyclic Tau(9XXXX307) - Repair Bill(2013-11-30 15:55:01)>
Я не верю, что __iexact не является идеальным решением, если кто-то может предположить, что я делаю неправильно, что было бы очень полезно.
В настоящее время я запускаю Django 1.6 и Python 2.6.5. MySQL версия сервера: 5.1.72-0ubuntu0.10.04.1 (Ubuntu)
Использование connection.queries
Я вижу следующие запросы результатов от различного получить заявления:
__iexact --> `balance` LIKE '1295599062.45' : Matches
__exact --> `balance` = '1295599062.45' : No Match
str --> `balance` = '1295599062.45' : No Match
Decimal(str( --> `balance` = '1295599062.45' : No Match
Raw SQL --> `balance` = 1295599062.45 : Matches
ли я делаю что-то не так с сравнением ?
Какую базу данных вы используете? –
MySQL Версия сервера: 5.1.72-0ubuntu0.10.04.1 – ModulusJoe
Изменились ли значения max_digits и decimal_places? Кроме того, что такое значение sql_mode? Я просматривал http://dev.mysql.com/doc/refman/5.1/en/precision-math-expressions.html, чтобы увидеть, будет ли что-то фанки, но я не вижу условий, при которых это произойдет еще , –