Django-фильтр для каркасов отдыха django

Chuck LaPress спросил: 28 марта 2018 в 01:42 в: django

Я надеюсь, что есть решение для моей проблемы. Я пытаюсь вызвать вызов URL-адреса в javascript из пути, который выглядит следующим образом: / api / vendor_filter /? City = & zipCode = 29615 & dateServing = 04% 2F21% 2F2018

У меня есть установите фильтр вызова для вызова данных с даты и почтового индекса.

То, что я надеюсь достичь, состоит в том, что этот звонок уже заполняет дату как текущую дату и почтовый индекс из зарегистрированного почтового индекса устройства, zip-код в этом случае 29615 фактически вытаскивает диапазон от 29601, 29627, чтобы получить любой почтовый индекс в этом диапазоне.

Это будет то же самое, что и список заявлений (диапазон (29601,29627 + 1)). так что пользовательский почтовый индекс вытаскивает все элементы zip-кода в базе данных в этом диапазоне.

Почтовый индекс может быть как указано выше или может быть 68011, и в этом случае мне нужен диапазон (67998, 68024 ), поэтому независимо от почтового индекса пользователя в вызове почтовый индекс представлен в середине диапазона,


1 ответ

Geancarlo Murillo ответил: 31 марта 2018 в 03:29

Измените ваш фильтр следующим образом:

class VendorFilter(django_filters.FilterSet):
    zipCode = django_filters.NumericRangeFilter(queryset=VendorListing.objects.all())        class Meta:
        model = VendorListing
        fields = ['dateServing','city', 'zipCode']

Вы можете использовать фильтры из приложения django_filters. Прочитайте документы

Chuck LaPress ответил: 31 марта 2018 в 06:14
Я исправил VendorFilter и прочитал документацию по Django-фильтрам для NumericRange, которая потребует корректировки для модели VendorListing. Это где должна быть реализована логика диапазона? Мой исходный запрос ссылался на необходимость получения диапазона данных GET из запроса URL, поэтому, если x = zipCode, тогда все zipCode в диапазоне x-8, x + 8 являются действительными данными. Я уже способен производить х из моего звонка. Кроме того, если требуется модификация модели данных, есть лучший способ создать диапазон с другим объектом данных.
Chuck LaPress ответил: 31 марта 2018 в 10:46
Фактическое изменение модели и использование Postgres NumericRange в поле zipCode - это способ сделать эту работу.