0

当我得到一个对象列表时,我只想要属于登录用户的对象。

我在想,也许这可以通过覆盖默认管理器在模型管理器中完成,但我不确定如何让登录使用。这是我目前所拥有的......

class GroupsManager(models.Manager):
    def get_query_set(self):
        return super(GroupsManager, self).get_query_set().filter(user=???????)

我在正确的轨道上吗?我怎样才能实现我的目标?还是有更好的方法来做到这一点?

谢谢。

4

1 回答 1

5

您无权访问request模型或模型管理器中的(以及当前登录的用户)。因此,您可以编写一个通用管理器方法,该方法接受用户实例并仅返回属于该用户的对象:

class GroupsManager(models.Manager):
    def for_user(self, user):
        return self.get_query_set().filter(user=user)

在你的模型中:

class Group(models.Model):
    objects = GroupsManager()

在视图中:

def my_view(request):
    groups = Group.objects.for_user(request.user)
于 2013-03-13T20:59:04.873 回答