2016-08-08 17 views
0
Arbeits

Die folgende lte und gte Filterabfragen liefert 0 Objekte:Tastypie dezimal und Datetime-Filter nicht

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 

Hier 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

In settings.py USE_TZ = False

leiten Postgresql 9.3, Django 1.6 und Tastypie 0.12.2. Nicht sicher, was falsch ist.

Grüße, Allan

Antwort

0

Ich glaube, Sie müssen Flüsse wählen, wo runoff sind zwischen 100 und 150 oder dt_timestamp zwischen 2015-01-01T03: 00 und 2015-01-07T18: 00. In diesem Fall versuchen:

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 

Wenn Sie Flüsse wählen, in dem Abfluss ist niedriger als 100 oder mehr als 150, dann müssen Sie build_filters Funktion zu überschreiben:

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 

und Verwendung:

http://localhost/river/river/?runoff_not_between=100.0,150.0 
http://localhost/river/river/?runoff_not_between=100,150 
Verwandte Themen