環境:Python 2.7.3 || Django 1.4.1
ログインしたユーザーの役割に基づいて、Webページのメニューオプションを制限しようとしています。モデルにUserProfileクラスを作成し、ドキュメントに記載されているようにUserにリンクしました(ユーザーを追加する場合、Django Adminで完全に機能します)。たとえば、通常のユーザーには「ホーム」と「mytasks」のみがあり、管理者ユーザーには「ドメインタスク」もあります。
base.htmlテンプレートのコードは次のとおりです。
{% if user.get_profile.role == "Admin" %}
<ul id="nav">
<li><a href="{% url home %}">Home</a></li>
<li><a href="{% url mytasks %}">My Tasks</a></li>
<li><a href="{% url domaintasks %}">Domain Tasks</a></li>
</ul>
上記は、サイト全体のナビゲーションバーをレンダリングするときにチェックされます。
問題は文字列をデータベースオブジェクト(以下に印刷)と比較することだと思いますが、比較を機能させる方法を見つけることができませんでした。
>>> b = Role.objects.all()
>>> print b
[<Role: Admin>, <Role: User>]