如何将过滤器传递给django tastypie

时间:2012-08-30 10:26:23

标签: django backbone.js tastypie

我对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的最佳方法是什么?

加特

1 个答案:

答案 0 :(得分:1)

经过几次搜索后,我在SO中得到了this问题,这完全回答了我的问题。

基本上,您将过滤添加到tastypie资源文件

class TenderResource(ModelResource):
    class Meta:
        ....
        filtering = {
                       "dept_ref":ALL
                    }

然后通过您的骨干collections.fetch方法

将过滤器作为名为“data”的javascript对象传递
MyCollection.fetch({data:{"dept_ref":"119"}})