如何将过滤器传递给django tastypie
我对django tastypie的这种行为感到有点困惑,我试图通过backbone.js向我的资源传递一个过滤器,但什么也没有返回 我的资源类如下所示如何将过滤器传递给django tastypie,django,backbone.js,tastypie,Django,Backbone.js,Tastypie,我对django tastypie的这种行为感到有点困惑,我试图通过backbone.js向我的资源传递一个过滤器,但什么也没有返回 我的资源类如下所示 class TenderResource(ModelResource): class Meta: queryset = Tender.objects.all() authorization = Authorization() list_allowed_methods = [
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,
}
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)),
)
TENDER_API = "/api/v1/tender/?dept_ref=119/";
我的URLconf文件如下所示
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,
}
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)),
)
TENDER_API = "/api/v1/tender/?dept_ref=119/";
在my apps.js(包含主干逻辑)中,我使用过滤器调用资源的url如下所示:
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,
}
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)),
)
TENDER_API = "/api/v1/tender/?dept_ref=119/";
但是当我运行应用程序时,不会返回任何结果!,如果我直接从浏览器运行这个URL,即
"http://127.0.0.1:8000/api/v1/tender/?dept_ref=119/"
我从资源接收json结果
但是…
当我在没有过滤的情况下从我的应用程序中通过以下URL时,我会收到所有数据
TENDER_API = "/api/v1/tender/";
我错过了什么?或者,向django tastypie传递过滤器的最佳方式是什么
盖特经过几次搜索后,我提出了一个问题,因此我的问题得到了很好的回答 基本上,您将过滤添加到您的tastypie资源文件中
class TenderResource(ModelResource):
class Meta:
....
filtering = {
"dept_ref":ALL
}
然后通过主干collections.fetch方法将过滤器作为名为“data”的javascript对象传递
MyCollection.fetch({data:{"dept_ref":"119"}})
经过几次搜索,我提出了一个问题,所以我的问题得到了很好的回答 基本上,您将过滤添加到您的tastypie资源文件中
class TenderResource(ModelResource):
class Meta:
....
filtering = {
"dept_ref":ALL
}
然后通过主干collections.fetch方法将过滤器作为名为“data”的javascript对象传递
MyCollection.fetch({data:{"dept_ref":"119"}})
后面的斜杠会有问题吗?这就是
的情况。”http://127.0.0.1:8000/api/v1/tender/?dept_ref=119“
而不是”http://127.0.0.1:8000/api/v1/tender/?dept_ref=119/“
?不,两种方法都试过了,但都不管用,所以我认为这比django/tastypie更像是一个backbone.js问题。根据我的经验,这里不会有太多问题。您是否可以检查主干网发出的具体请求(例如使用Firebug)?顺便说一句,您粘贴的第一个片段中的缩进是错误的。还有Authorization()类可能在这里发挥作用。但我很好奇为什么它可以直接从浏览器中正常工作。。。我想身份验证会阻止对…的请求。尾部斜杠会有问题吗?这就是的情况。”http://127.0.0.1:8000/api/v1/tender/?dept_ref=119“
而不是”http://127.0.0.1:8000/api/v1/tender/?dept_ref=119/“
?不,两种方法都试过了,但都不管用,所以我认为这比django/tastypie更像是一个backbone.js问题。根据我的经验,这里不会有太多问题。您是否可以检查主干网发出的具体请求(例如使用Firebug)?顺便说一句,您粘贴的第一个片段中的缩进是错误的。还有Authorization()类可能在这里发挥作用。但我很好奇为什么它可以直接从浏览器中正常工作。。。我认为身份验证会阻止对..的请求。。