フィールドで呼び出されるクラスSchedule
があります(これは正しいですか?)。を使用して設定し
admins = models.ManyToManyField(User)
ました。このフィールドには、複数選択できるユーザーのリストが含まれています。
スケジュールのビューでは、たくさんの情報を表示します。現在ログインしているユーザーが、表示されているそのスケジュールの管理者に含まれているかどうかに基づいて、さらにいくつかのことを示したいと思います。
Djangoの哲学によれば、ビュー内にビジネスロジックを、テンプレート内にプレゼンテーションロジックを含める必要があります。したがって、ログに記録されたユーザーが管理者の中にいる場合の計算はビューで実行する必要があり、ユーザーがいる場合は、表示される内容をテンプレートで決定する必要があります。あなたはそれを達成することができます:
# views.py
def schedule(request, id):
schedule = get_object_or_404(Schedule, pk=id)
if request.user.is_authenticated():
is_admin = schedule.admins.filter(pk=schedule.pk).exists()
else:
is_admin = False
data = {
'schedule': schedule,
'is_admin': is_admin,
}
return render_to_response('template.html', data)
# template.html
{% if is_admin %}
<p>You are an admin of the schedule!</p>
{% else %}
<p>Sorry. You are not an admin of the schedule</p>
{% endif %}