3

私はGET / Tastypie(読み取り専用)ソリューションを使用しています。

PUT/PATCH リクエストを許可し、レコードの PATCHING に成功しました。

ただし、PATCH 機能を、(既に) 認証および承認されたユーザーに対して、適切なモデル リソースの特定のフィールドのみに制限したいと考えています。ユーザーがすべてのフィールドを GET (参照) できるようにしたいのです。

この種の制限を達成するのに最適な場所 (方法は?) はどこですか?

ドキュメント: https://django-tastypie.readthedocs.org/en/latest/interacting.html?highlight=patch#partially-updating-an-existing-resource-patch

4

2 に答える 2

1

ユーザーの承認が既に整っているように見えるので、ModelResource の Meta クラスに追加することでこれを実装できるはずです。たとえば、DjangoAuthorization ( tastypie docs から) を使用します。

from tastypie.authentication import BasicAuthentication
from tastypie.authorization import DjangoAuthorization
...

class SomeResource(ModelResource):
  ...
  class Meta:
    ...
    authentication = BasicAuthentication()
    authorization = DjangoAuthorization()

この例では、 で定義されているアクションのユーザー認証が与えられますdjango.contrib.auth.models.Permission

これもtastypie Google Groupから入手しました。脱水 法を 採用。Google グループのリンクで提供されている例を次に示します。

def dehydrate(self, bundle): 
 bundle = super(self, MyResource).dehydrate(bundle) 

 # exclude the restricted field for users w/o the permission foo 
 if not bundle.request.user.has_perm('app.foo'): 
     del bundle.data['restricted'] 

 return bundle 
于 2012-12-04T14:18:51.197 に答える