Фильтр форм - неподдерживаемый поиск 'gte' для FloatField - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь сделать 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']

И когда я заполняю поля ввода и выполняю поиск, я получаю следующую ошибку: Неподдерживаемый поиск 'gte' для FloatField или присоединение к полю недопустимо.

Я не нашел ничего, что могло бы мне помочь.Я уже пытался использовать 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 голосов
/ 26 сентября 2019

Я уверен в том, что вы можете использовать фильтры __gte и __lte в FloatFields.Я не знаю, что означает другая возможность «вступать на поле не разрешено».Я обычно кодирую свои поля фильтра, используя более мощное представление, например

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

, что приводит к трем фильтрам в поле Float ft для объекта, доступ к которому осуществляется через поле внешнего ключа desc.

Являются ли декларативные фильтры и записи в fields взаимоисключающими?Похоже, вы говорите ему создать два одинаковых фильтра двумя разными способами.

...