2016-08-08 2 views
0

Следующие ЛТР и GTE фильтров запросов возвращает 0 объектов:Tastypie десятичные и DateTime фильтры не работают

curl http://localhost/river/river/?runoff__lte=100.0&runoff__gte=150.0 
curl http://localhost/river/river/?runoff__lte=100&runoff__gte=150 
http://localhost/river/river/?dt_timestamp__lte=2015-01-01T03:00&dt_timestamp__gte=2015-01-07T18:00&format=json 

Вот models.py

class River(models.Model): 
    dt_timestamp = models.DateTimeField() 
    stage = models.DecimalField(max_digits=10, decimal_places=3, blank=True, null=True) 
    runoff = models.DecimalField(max_digits=10, decimal_places=3) 

api.py

class RiverResults(ModelResource): 
    class Meta: 
     queryset = River.objects.all() 
     resource_name = 'river' 
     authorization = Authorization() 
     filtering = { 
      'user': ALL_WITH_RELATIONS, 
      'dt_timestamp': ALL 
      'stage': ALL, 
      'runoff': ALL, 
     } 

В settings.py USE_TZ = False

бегаю Postgresql 9,3, Джанго 1,6 и Tastypie 0.12.2. Не уверен, что я делаю неправильно.

С уважением, Allan

ответ

0

Я думаю, вам нужно выбрать реки, где runoff находятся между 100 и 150 или dt_timestamp между 2015-01-01T03: 00 и 2015-01-07T18: 00. В этом случае попробуйте:

http://localhost/river/river/?runoff__gte=100.0&runoff__lte=150.0 
http://localhost/river/river/?runoff__gte=100&runoff__lte=150 
http://localhost/river/river/?dt_timestamp__gte=2015-01-01T03:00&dt_timestamp__lte=2015-01-07T18:00 

Если Вам нужно выбрать реки, где стекание ниже, чем 100 или больше, чем 150, то Вам необходимо перезаписать build_filters функцию:

def build_filters(self, filters=None): 
    qs_filters = super(RiverResults, self).build_filters(filters) 
    if filters.get('runoff_not_between') is not None: 
     runoff_not_between = filters.get('runoff_not_between').split(',') 
     qs_filters = qs_filters.update(Q(runoff__lte=runoff_not_between[0]) | Q(runoff__gte=runoff_not_between[1])) 
    return qs_filters 

и использование:

http://localhost/river/river/?runoff_not_between=100.0,150.0 
http://localhost/river/river/?runoff_not_between=100,150 
Смежные вопросы