Djangoアプリケーションのすべてのモデルにcan_view
メタアクセス許可を追加します。DjangoアプリケーションのすべてのモデルにMetaパーミッションを適用する方法はありますか?
はかなり私はself.verbose_name
は、この場合であってもそのように動作するかどう....
が可能、このされてもわからないんだけどmodels.py
class Meta:
permissions = [ ("can_view", "Can view {something}".format(something = self.verbose_name) ]
内のすべてのクラスにこれを追加します?
ボーナスに関する質問:モデルのMeta
のパーミッションを追加したら、私はhas_perm
と呼ぶことができますか?同様に
if request.user.has_perm('polls.can_view') :
# Show a list of polls.
else :
# Say "Insufficient permissions" or something.
私は自分自身を疑問に思っていましたが、最終的にはdetailviewを持つモデルはほんの一握りでしたので、すべてのモデルで表示権限を有効にしようとしなかったのです。しかし、私は、detailviewがたくさんあるプロジェクトでは、一つずつそれを行うのが面倒かもしれないことを理解しています。一方、私は許可のチェックから継承するベースビュークラスを作成しました:https://gist.github.com/97b3a0f17aa6e4d35da8ので、役立つかもしれません。あなたがdjango-guardianを使用しないなら、あなたはそれを簡単に適応させることができます。また、言語であなたの質問にタグを付けることを忘れないでください(私はPythonタグを追加しました) – jpic
@jpic Djangoがデフォルトの権限の1つとして 'can_view'を使用していないのはなぜかと思いました。まあ、これらの権限が必要な5つのモデルしかありません。多分私はDjangoの 'models.Model'クラスをオーバーライドできますか?それはおそらくそれの価値はありません。ちなみに、過去2ヶ月間Djangoで私を助けてくれてありがとう。あなたは私のプライベート・メンターのようです:-)。私の質問や何かを定期的にチェックしていますか? – hobbes3