外部キーによってリンクされている2つのリソースがあります
AJobを作成/変更するときにAUserリソースを読み取り専用にしたい
class AUser(ModelResource):
class Meta:
queryset = User.objects.all()
resource_name = 'user'
authentication = SessionAuthentication()
authorization = Authorization()
excludes = ['email', 'password', 'is_superuser', 'is_staff', 'is_active', 'date_joined', 'last_login']
def can_update(self):
return False
def can_create(self):
return False
def can_delete(self):
return False
def apply_authorization_limits(self, request, object_list):
return object_list.filter(pk=request.user.pk)
class AJob(ModelResource):
user = fields.ForeignKey( AUser, 'user', full=True)
paused = fields.BooleanField(attribute='isPaused', readonly=True)
hasRules = fields.BooleanField(attribute='hasRules', readonly=True)
class Meta:
queryset = Job.objects.all()
resource_name = 'job'
authentication = SessionAuthentication()
api_name = 'v1'
authorization = Authorization()
allowed_methods = ['get', 'post', 'delete']
def obj_create(self, bundle, request=None, **kwargs):
return super(AJob, self).obj_create(bundle, request, user=request.user)
def apply_authorization_limits(self, request, object_list):
return object_list.filter(user=request.user)
readonly = TrueをforeignKeyに直接追加しようとしましたが、水和時に無視され、ユーザーがnullであるため、制約違反が発生します
POSTAJobリクエストに追加する場合
"user":{"id": "5"、 "is_staff":false}
5が現在のユーザー
ユーザーモデルが更新され、管理者の役割が削除されます
save_relatedを実行するときのtastypieは認証をチェックしないようです
このユーザーリソースを読み取り専用にするにはどうすればよいですか?
tastypiev0.9.12-alphaを使用しています