我正在尝试制作一个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的对象
答案 0 :(得分:0)
我确定的是,您可以在FloatFields上使用__gte
和__lte
过滤器。我不知道“不允许参加比赛”的另一种可能性是什么。我通常使用功能更强大的表示形式对过滤器字段进行编码,例如
fields = {
'desc__ft':['gte','lte','exact'],
...
}
这将在通过外键字段ft
访问的对象的Float字段desc
上产生三个过滤器。
fields
中的声明性过滤器和条目是否互斥?您似乎在告诉它以两种不同的方式创建相同的两个过滤器。