Django:仅显示用户自己的数据

时间:2012-08-06 17:48:25

标签: django authentication model private

我已经构建了一个应用程序,其中列出了人员和公司。人员和公司的每个条目都归用户所有。

owner = models.ForeignKey('auth.User', related_name='+', null=True, blank=True)

我想知道如何在每个视图中只显示特定用户拥有的帖子。因此,只显示用户添加的公司,而不是每个用户的每个条目。

我想如果request.user = people.owner可能有用,但这真的是最好的方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

当您在视图中找到相关模型时,请按用户过滤:

 people = People.objects.filter(owner=request.user).filter(...)

如果您想稍微考虑一下,可以使用custom manager和相关方法,这看起来像

people = People.objects.for_current_user(request).filter(...)

但当然这不会节省太多的输入,因为你仍然需要传递request对象 - 但如果你想要更复杂的逻辑(例如超级用户可以查看所有人),那么这将是方便的