2012-11-07 29 views
3

我想通过相关字段pk筛选资源。Tastypie - 通过相关pk筛选

例如,我有国家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'] 

而且一个例子网址:

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

任何想法?

+0

你在你的城市模型上有国家ForeignKey吗? – 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上添加一个过滤变量,但我得到了相同的结果。 –

+2

好的。我解决了它,似乎没有重新启动服务器或其他东西。如果我想补充: 过滤= { “ID”:ALL, } 它解决了这个问题,你可以更新你的答案,所以我可以将其标记为解决?谢谢! –

+0

谢谢Mc-,这个评论拯救了我 – Tsangares