2016-05-21 5 views
0

Я пытаюсь фильтровать некоторые объекты на QuerySet, поле на то, что я пытаюсь это десятичное ...Джанго: QuerySet или фильтр на десятичном поле

модель:

class CheckingAccount(models.Model): 
    owner = models.ForeignKey(Owner) 
    name = models.CharField(max_length=50, blank=False) 
    description = models.CharField(max_length=50, blank=True) 
    datetime = models.DateTimeField(default=datetime.now, blank=False) 
    currency = models.ForeignKey(Currency) 
    balance = models.DecimalField(max_digits=20, decimal_places=6) 

    def __unicode__(self): 
     return unicode(self.balance) 

форма :

def clean(self): 
    message = self.cleaned_data['acquisition_value'] 
    ow = Owner.objects.get(user_id=self.request.user.id) 
    ca = CheckingAccount.objects.filter(balance=self.cleaned_data['checkingaccounts']) 

ошибка я получаю: Исключение Значение:
не удается преобразовать в десятичную

Любая идея?

+0

balance = models.DecimalField (max_digits = 20, decimal_places = 6) У вас есть код для Ex. Что такое модели, вы пробовали распечатать то, что он возвращает, прежде чем пытаться его преобразовать? тип (модели) возвращает? – glls

+0

, что является значением 'self.cleaned_data ['checksaccounts']'? – ozgur

+0

glss, да, я дебютировал, и это значение равно: 230000.000000. пару моделей. Один из (RealState) имеет форму, откуда мне нужно получить все контрольные счета для определенного владельца. Эти контрольные учетные записи загружаются в form.ModelChoiceField (с запросом), он работает нормально. Прежде чем сохранить форму RealState, я использую чистый метод для проверки того, что у расчетной учетной записи есть достаточный баланс, чтобы что-то купить. Здесь я не могу выполнить эту проверку, потому что я не могу получить эту учетную запись. –

ответ

1

Это может пойти не так по нескольким причинам, в зависимости от возвращаемого значения cleaned_data.

Во-первых - что, если cleaned_data- сбой и возврат и исключение или что-то в этом роде? Ваш фильтр не будет работать :( Во-вторых - это может быть десятичным проблема литья

ИМХО Не используйте cleaned_data в фильтре ли ваши чистые в другом месте, и фильтр с прозрачным легким десятичного числа в чистом методе.. .

+1

Спасибо, была проблема.! Как вы сказали, это: 'ca = CheckingAccount.objects.filter (balance = self.cleaned_data ['checksaccounts'])' не имеет десятичного числа, у этого есть CheckingAccout, у которого есть баланс. Я сделал это 'a = self.cleaned_data ['checksaccounts']' 'if ca.balance> self.cleaned_data ['purchase_value']' Спасибо.! –

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