2016-07-01 8 views
0

Djangoのレストフレームワークで関連オブジェクトのパーミッションを制限する方法はありますか? は例えば、私は、ユーザーが所有するチケットモデルインスタンスがあります。DRFパーミッション:関連モデルのhas_object_permission

class Ticket(models.Model): 
    # other fields 
    state = FSMField(default=SOME_STATE) 
    owner = models.ForeignKey(User, related_name="tickets", null=True) 

    def allocate(self, by=None): 
     # allocate the ticket here 
     pass 

をそして、私は所有者が唯一のallocateメソッドにアクセスできるようにしたいです。 Figure私はhas_object_permissionを使うべきですが、関連するオブジェクトのためにそれを行う方法はわかりません。 また、state以外のすべてのフィールドをシリアライザで読み取り専用としてマークすることができます。

アイデア?

答えて

0

出力に関しては、that postで説明されているように、関連するフィールド/シリアライザのget_querysetを無効にすることができます。

入力に関しては、2番目の検証パスで、つまりシリアライザが検証済みのデータを返した後に、そのアクセス許可を処理する必要があります。必要に応じてエラーデータをValidationErrorに送信する必要があります。

関連する問題