表单过滤器-FloatField不支持的查找'gte'

时间:2019-09-26 13:13:44

标签: python django python-3.x django-filter

我正在尝试制作一个FormFilter。

我的模型中有以下内容:

class TabelaPreco(models.Model):
    [...]

class TabelaPrecoItem(models.Model):
    [...]
    preco = models.FloatField()
    tabela_preco = models.ForeignKey('TabelaPreco', on_delete=models.CASCADE, related_name='itens')

我的FormFilter:

class TabelaItemProdutosFilter(django_filters.FilterSet):
    preco__gte = django_filters.NumberFilter(lookup_expr='gte')
    preco__lte = django_filters.NumberFilter(lookup_expr='lte')

    class Meta:
        model = TabelaPrecoItem
        fields = ['preco__gte', 'preco__lte']

当我填写输入并搜索时,出现以下错误: 不支持对FloatField的查找'gte'或不允许在字段上加入。

我没有找到任何可以帮助我的东西。我已经尝试过使用NumericRangeField,但是我不知道如何将其放在模板的2个不同输入中。

编辑: 我认为问题出在我的查询集中。我在上面更改了模型。

form_filter = TabelaItemProdutosFilter(request.GET, queryset=tabela_preco.itens.select_related('produto', 'produto__modelo').filter(produto__saldo__gt=0).order_by('-produto__codigo'))

tabela_preco是我的模型TabelaPreco的对象

1 个答案:

答案 0 :(得分:0)

我确定的是,您可以在FloatFields上使用__gte__lte过滤器。我不知道“不允许参加比赛”的另一种可能性是什么。我通常使用功能更强大的表示形式对过滤器字段进行编码,例如

fields = {
    'desc__ft':['gte','lte','exact'],
    ...
}

这将在通过外键字段ft访问的对象的Float字段desc上产生三个过滤器。

fields中的声明性过滤器和条目是否互斥?您似乎在告诉它以两种不同的方式创建相同的两个过滤器。