当我得到一个对象列表时,我只想要属于登录用户的对象。
我在想,也许这可以通过覆盖默认管理器在模型管理器中完成,但我不确定如何使用登录。这就是我到目前为止......
class GroupsManager(models.Manager):
def get_query_set(self):
return super(GroupsManager, self).get_query_set().filter(user=???????)
我是在正确的轨道上吗?我怎样才能实现目标?或者有更好的方法吗?
感谢。
答案 0 :(得分:4)
您无权访问模型或模型管理器中的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)