在Django中,只有作者编辑/删除帖子的最简单方法是什么?

时间:2016-05-02 03:04:12

标签: django authorization

在Django中,我有一个Post模型,用户可以发布消息。在views.py中,如何只发布帖子的原作者可以编辑或删除它?

@login_required
def edit(request, pk):
    post = get_object_or_404(Post, pk=pk)

2 个答案:

答案 0 :(得分:2)

您也可以将user添加为过滤器:

@login_required
def edit(request, pk):
    post = get_object_or_404(Post, pk=pk, author=request.user)

author是与用户对应的Post模型上的字段。如果您的字段被命名为其他字段,则可以在此处使用。

如果HTTP-404没有Postpk是请求该页面的用户,则会出现author错误。

答案 1 :(得分:0)

get_or_create()除了接受模型类外,还接受查询集。因此,您可以做的是传递所有用户帖子的查询集。

我认为实现这一目标的最简单方法是做一些像

这样的事情
@login_required
def edit(request, pk):
    post = get_object_or_404(request.user.posts.all(), pk=pk)