2012-11-07 3 views
3

관련 필드 pk를 통해 리소스를 필터링하고 싶습니다.Tastypie - 관련 pk 필터링

예를 들어, 나는 국가가 있고 그 나라에서 모든 도시를 얻고 싶습니다. 내가 어떻게 할 수 있니?

class CityResource(ModelResource): 
    class Meta: 
     queryset = City.objects.all() 
     resource_name = 'city' 
     fields = ['name','id'] 

     filtering = { 
      #Something here 
     } 

class CountryResource(ModelResource): 
    class Meta: 
     queryset = Country.objects.all() 
     resource_name = 'country' 
     fields = ['name','code2','id'] 

그리고 예를 들어, URL :

http://startuprepublik.pre.is/api/v1/city/?format=json&country__pk=4 

어떤 생각?

+0

귀하의 도시 모델에는 국가 외래 키가 있습니까? – andrefsp

+0

예. cities_light를 사용하고 있습니다. https://github.com/yourlabs/django-cities-light/blob/master/cities_light/models.py –

답변

3
from tastypie.fields import ForeignKey 
from tastypie.resources import ALL_WITH_RELATIONS 

class CityResource(ModelResource): 
    country = ForeignKey("path.to.api.CountryResource", "country") 

    class Meta: 
     queryset = City.objects.all() 
     resource_name = 'city' 
     fields = ['name','id'] 

     filtering = { 
      "country": ALL_WITH_RELATIONS 
     } 

class CountryResource(ModelResource): 
    class Meta: 
     queryset = Country.objects.all() 
     resource_name = 'country' 
     fields = ['name','code2','id'] 
     filtering = { "id": ALL } 
+0

안녕 Issac. 이 응답을받습니다> '국가'입력란에서 필터링을 허용하지 않습니다. CountryResource에 필터링 var를 추가하려고 시도했지만 동일한 결과가 나타납니다. –

+2

확인. 나는 그것을 해결, 그것은 서버 또는 뭔가를 다시 시작하지 않았다 것 같습니다. 추가 한 경우 : 필터링 = { "id": ALL, } 문제가 해결되었으므로 해결책을 표시 할 수 있도록 답변을 업데이트 할 수 있습니까? 감사! –

+0

감사합니다. Mc- 님,이 메모는 나를 구해 줬습니다. – Tsangares