1

フィールドで呼び出されるクラスScheduleがあります(これは正しいですか?)。を使用して設定し admins = models.ManyToManyField(User)ました。このフィールドには、複数選択できるユーザーのリストが含まれています。

スケジュールのビューでは、たくさんの情報を表示します。現在ログインしているユーザーが、表示されているそのスケジュールの管理者に含まれているかどうかに基づいて、さらにいくつかのことを示したいと思います。

4

1 に答える 1

3

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 %}
于 2013-03-26T04:27:39.550 に答える