1

django tastypieのこの動作に少し戸惑い、backbone.jsを介してリソースにフィルターを渡そうとしていますが、何も返されません。

私のResourceクラスは次のようになります。

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の結果を受け取ります。

しかし ...

アプリケーションからフィルターなしで次のURLを渡すと、すべてのデータを受け取ります。

TENDER_API = "/api/v1/tender/";

私は何が欠けていますか?またはフィルターをdjangotastypieに渡す最良の方法は何ですか?

ガト

4

1 に答える 1

1

数回検索した後、私はSOでこの質問を受け取りました。

基本的に、tastypieリソースファイルにフィルタリングを追加します。

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

次に、バックボーンcollections.fetchメソッドを介して「データ」と呼ばれるjavascriptオブジェクトとしてフィルターを渡します。

MyCollection.fetch({data:{"dept_ref":"119"}})
于 2012-08-31T06:01:49.983 に答える