2

これは私の app/api.py です

from app.models import Person
from tastypie.resources import ModelResource, ALL, ALL_WITH_RELATIONS
    class PersonResource(ModelResource):
        class Meta:
            queryset = Person.objects.all()
            resource_name='person
            # filtering = { "email" : ALL,"dob":ALL,"mobile":ALL}
            filtering = {
                'email': ALL,
                'mobile': ALL,
                'dob': ALL,
                }

/api/person/?format=json@email=abcd@example.com で json が正常に返されます。

しかし、json出力に「ステータス」としてもう1つの文字列を追加したいと思います。これは、フィルタリングが成功した場合はTrueになり、指定された電子メールに対応するデータベースにエントリがない場合はFalseになります。どうやってやるの ?

4

1 に答える 1

3

最も簡単な方法は、独自のメソッドを定義することalter_list_data_to_serializeです。get_listこのメソッドは、問題のリクエストのレスポンスを返す直前に呼び出され、レスポンスでシリアル化される最終的な辞書を返す必要があります。

オブジェクト リストのメタデータを再構築していないと仮定すると (tastypie のページネータは、オブジェクトのリストをディクショナリにラップしてobjects、リストをポイントし、total_countオブジェクトの合計数を保持するなど)、次のことができます。

def alter_list_data_to_serialize(self, request, data):
    data['status'] = data['total_count'] != 0
    return data

それ以外の場合、カスタム ページネータを使用していてstatus、すべてのリソースにキーを含めたい場合は、Paginator.page()メソッドを変更してキーを追加できstatusます。

于 2013-10-06T10:30:30.273 に答える