2013-03-20 3 views
0

Я создал свой собственный ресурс в Django-Tastypie API. Я выполнял некоторые операции отдыха, и теперь я хотел бы реализовать свой пользовательский указатель, который будет генерировать значения next/prev на основе «ключа», переданного по URL-адресу.Django-Tastypie custom paginator

Проблема заключается в следующем: если я передаю значение типа «http: localhost: 8000/api/stats/list/nextpage /», obj_get автоматически вызывается и не позволяет мне возвращать список значений, только один стоимость.

Так что я хочу, чтобы obj_get возвращал более одного значения. Мой api.py выглядит следующим образом:

Мой класс ресурсов:

class CountryCountResource(Resource): 

    countryName= fields.CharField(attribute='countryName') 
    countryCount = fields.FloatField(attribute='countryCount') 

    class Meta: 
     resource_name = 'country/list' 
     object_class = dict2obj 
     include_resource_uri = False 
     authorization = DjangoAuthorization() 
     authentication = BasicAuthentication() 

    def detail_uri_kwargs(self, bundle_or_obj): 
     kwargs = {} 

     if isinstance(bundle_or_obj, Bundle): 
      kwargs['pk'] = bundle_or_obj.obj.countryName 
     else: 
      kwargs['pk'] = bundle_or_obj.countryName 

     return kwargs 

    def obj_get_list(self, request=None, **kwargs): 

     db = MySQLdb.connect(host='xxxxxx',user='xxx',passwd='xxx',db='xxx') 
     cur = db.cursor() 
     cur.execute("SELECT count(*) FROM users") 
     total_users=cur.fetchall() 
     for item in total_users: 
      totalint=int(item[0]) 

     cur.execute("SELECT country,count(country) FROM users GROUP BY country ORDER BY count(country) DESC LIMIT 0,10") 

     #ordered tuple 
     mylist=cur.fetchall() 

     newlist=[] 
     for i in mylist: 
      auxd={} 
      auxd['countryName']=str(i[0]) 
      res=int(i[1])/float(totalint) 
      res="%.2f" % res 
      auxd['countryCount']=res 
      newlist.append(dict2obj(auxd)) 

     db.close() 

     return newlist 

    def obj_get(self, request=None, **kwargs): 
     return newlist <<<<<<------- DONT WORK 

Любая идея?

ответ