在Django中,我有一个Post模型,用户可以发布消息。在views.py中,如何只发布帖子的原作者可以编辑或删除它?
@login_required
def edit(request, pk):
post = get_object_or_404(Post, pk=pk)
答案 0 :(得分:2)
您也可以将user
添加为过滤器:
@login_required
def edit(request, pk):
post = get_object_or_404(Post, pk=pk, author=request.user)
author
是与用户对应的Post
模型上的字段。如果您的字段被命名为其他字段,则可以在此处使用。
如果HTTP-404
没有Post
且pk
是请求该页面的用户,则会出现author
错误。
答案 1 :(得分:0)
get_or_create()
除了接受模型类外,还接受查询集。因此,您可以做的是传递所有用户帖子的查询集。
我认为实现这一目标的最简单方法是做一些像
这样的事情@login_required
def edit(request, pk):
post = get_object_or_404(request.user.posts.all(), pk=pk)