django:查询集或十进制字段的过滤器

时间:2016-05-21 20:34:44

标签: python django-admin django-admin-filters

我正在尝试过滤查询集上的一些对象,我正在尝试的字段是十进制...

模型:

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'])

我得到的错误是: 例外价值:
无法转换为十进制

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

出于多种原因可能会出错,具体取决于cleaning_data的返回值。

首先 - 如果cleaning_data-失败并返回和异常或类似的东西怎么办?你的过滤器将无法正常工作:( 第二 - 它可能是一个十进制铸造问题。

IMHO 不要在过滤器中使用cleaning_data。 在其他地方清洁,并在清洁方法中使用清晰的简单十进制数进行过滤。