2013-03-26 81 views
1

我有一个名为Schedule的字段(此字段是否正确?)我设置了使用 admins = models.ManyToManyField(User)。该字段包含我可以选择倍数的用户列表。根据用户显示信息

在时间表的视图中,我显示了一堆信息。我想根据当前登录的用户是否包含在正在查看的该计划的管理员中显示一些其他内容。

+0

顺便说一句。当我说查看,我的意思是显示它在模板中。不在views.py – Hatter 2013-03-26 02:53:43

回答

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 %} 
+0

完美。正是我在找什么。谢谢。 – Hatter 2013-03-28 04:18:45