我对django tastypie的这种行为感到有点困惑,我试图通过backbone.js将过滤器传递给我的资源,但没有任何东西被返回。
我的资源类看起来像这样;
class TenderResource(ModelResource):
class Meta:
queryset = Tender.objects.all()
authorization = Authorization()
list_allowed_methods = ['get', 'post']
detail_allowed_methods = ['get']
resource_name = 'tender'
filtering = {
'dept_ref':ALL,
}
我的URLconf文件如下所示;
v1_api = Api(api_name='v1')
v1_api.register(TenderResource())
urlpatterns = patterns('',
# Examples:
url(r'^$', DocView.as_view(), name='docview'),
url(r'^api/$', include(v1_api.urls)),
)
在我的apps.js中,包含骨干逻辑,我使用过滤器调用资源的url看起来像这样;
TENDER_API = "/api/v1/tender/?dept_ref=119/";
但是当我运行应用程序时,没有返回结果!如果我使用此URL并直接从浏览器运行,即
"http://127.0.0.1:8000/api/v1/tender/?dept_ref=119/"
我从资源中收到json结果;
但......
当我从我的应用程序传递带有NO过滤器的以下URL时,我会收到所有数据;
TENDER_API = "/api/v1/tender/";
我缺少什么?或者将过滤器传递给django tastypie的最佳方法是什么?
加特
答案 0 :(得分:1)
经过几次搜索后,我在SO中得到了this问题,这完全回答了我的问题。
基本上,您将过滤添加到tastypie资源文件
class TenderResource(ModelResource):
class Meta:
....
filtering = {
"dept_ref":ALL
}
然后通过您的骨干collections.fetch方法
将过滤器作为名为“data”的javascript对象传递MyCollection.fetch({data:{"dept_ref":"119"}})