Monday 15 July 2013

How to implement raw sql query in Tastypie -



How to implement raw sql query in Tastypie -

i trying simple query, not work. thanks.

select * tsimple (start_date < '2012-04-20' , end_date null) or (end_date > '2012-04-20' , start_date < '2012-04-20') class tsimple (models.model): start_date = models.datetimefield() end_date = models.datetimefield(blank=true, null=true) ... class tsimpleresource(modelresource): def dehydrate(self, bundle): request_method = bundle.request.meta['request_method'] if request_method=='get': new_date = bundle.request.get.get('new_date', '') qs = tsimple.objects.raw( 'select * tsimple (start_date<=\'' + new_date + '\' , end_date>=\'' + new_date + '\') or (start_date<=\'' + new_date + '\' , end_date null)') ret_list = [row row in qs] // not work. not able right json info in javascript. // needs homecoming bundle. how replace bundle? // right way it? homecoming ret_list else: // ok. homecoming bundle

i have next questions:

1) (raw sql method) if implementing in dehydrate method right way it? if is, above not work. should homecoming bundle object. how build new bundle?

if above method ok, noticed bundle constructed .data field default query(?), thrown away new query. raise questions if right way it.

2) if there other raw sql method it? execute sql?

3) how in filter?

4) know sql , not familiar complex filter. that's why trying utilize raw sql method quick prototype. draw back? noticed using tastypie has many unnecessary queries don't know how rid of it. example, query on table foreign key trigger query table's data, don't want get.

i figure out filter , seems worked. still interested in raw sql.

def apply_filters(self, request, applicable_filters): base_filter = super(tsimpleresource, self).apply_filters(request, applicable_filters) new_date = request.get.get('new_date', none) if new_date: qset = ( ( q(start_date__lte=new_date) & q(end_date__gte=new_date) ) | ( q(start_date__lte=new_date) & q(end_date__isnull=true) ) ) base_filter = base_filter.filter(qset) homecoming base_filter

tastypie

No comments:

Post a Comment