如何在基于用户过滤时满足'AnonymousUser'

时间:2010-08-09 11:54:31

标签: django django-views

我有以下型号

class Team(models.Model):
    name = models.CharField(max_length=100)
    members = models.ManyToManyField(User, related_name="members", blank=True, null=True)

以下视图(控制器)

def my_teams(request):
    my_list = Team.objects.filter(members=request.user).order_by('name')
    return render_to_response('teams/index.html', {'my_list': my_list})

当用户登录时,这非常有用,但在作为匿名用户进行测试时,我收到以下错误。

Exception Value: int() argument must be a string or a number, not 'AnonymousUser'

我如何迎合匿名用户?这是在我的模板或视图中处理的吗?

非常感谢任何关于如何实现这一目标的建议。

1 个答案:

答案 0 :(得分:3)

我想我可以通过修改我的观点来解决这个问题:

def my_teams(request):
    if request.user.is_authenticated():
        my_list = Team.objects.filter(members=request.user).order_by('name')
        return render_to_response('teams/index.html', {'my_list': my_list})
    else:
        return render_to_response('teams/index.html', {})

最佳做法是什么都不返回?我现在如何在模板中处理这个问题?