2012-03-22 34 views
4

いくつかのフィールドをGETレスポンスに含め、POST確認応答にフィールドのより小さいサブセットを含めることができます。私はこれを達成するために、del bundle ['field1']、del bundle ['field2']をalter_detail_data_to_serializeに持つ必要があります。リソースを指定してリクエストタイプごとに除外する一般的な方法はありますか?フィールドと除外フィールド

答えて

5

私はTastypieソースから見ていると、次のように私の結論です....

をあなたが楽器にあなたのリソースを試してみて、メソッドがPOSTであるとき、その場でexcludes属性の値を変更することもできますが、この意志トリッキーで、最も重要なのはハックです。

したがって、私はあなたの最善の策は、あなたがやっている何をすることですが、おそらく代わりにdel bundle[ 'field' ]post_excludes属性またはそのようないくつかを紹介し、それらのフィールドを取り払うのよりよい、より柔軟な方法を実装し、複数を行うと思います。あなたは、例えば、このような何かを行うことができます:

class YourResource(Resource): 

    class Meta: 
     # ... 
     post_excludes = [ 'foo', 'bar' ] 
     # ... 

    # ... 

    def alter_detail_data_to_serialize(self, request, data): 
     if request.method == 'POST': 
      data.data = { 
       key : value for key, value in data.data.copy().iteritems() if \ 
       key not in self._meta.post_excludes } 
     return data 

    # ... 

これはきれいだろうともつれで終わるしないようにするために重要であるTastypieの「ルール」に準拠していますが、維持するのは難しいですコードをハッキング。

希望します。

関連する問題