私はGET / Tastypie(読み取り専用)ソリューションを使用しています。
PUT/PATCH リクエストを許可し、レコードの PATCHING に成功しました。
ただし、PATCH 機能を、(既に) 認証および承認されたユーザーに対して、適切なモデル リソースの特定のフィールドのみに制限したいと考えています。ユーザーがすべてのフィールドを GET (参照) できるようにしたいのです。
この種の制限を達成するのに最適な場所 (方法は?) はどこですか?
私はGET / Tastypie(読み取り専用)ソリューションを使用しています。
PUT/PATCH リクエストを許可し、レコードの PATCHING に成功しました。
ただし、PATCH 機能を、(既に) 認証および承認されたユーザーに対して、適切なモデル リソースの特定のフィールドのみに制限したいと考えています。ユーザーがすべてのフィールドを GET (参照) できるようにしたいのです。
この種の制限を達成するのに最適な場所 (方法は?) はどこですか?
ユーザーの承認が既に整っているように見えるので、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