如何在没有查询错误的情况下删除用户消息?
how do i delete a users message without query error?
我在删除用户评论时遇到页面重定向问题。下面是我的代码。它删除了消息但给我这个错误: Message.objects.get(id=message_id).delete().
不存在消息匹配查询
def remove_message(request, message_id):
Message.objects.get(id=message_id).delete()
return redirect(reverse('dashboard:show'))
^以上固定:
新问题,尝试仅删除当前用户的评论时无法显示我的删除按钮。代码如下:
views.py
def remove_message(request, user_id, message_id):
user = User.objects.get(id=request.session['user_id'])
Message.objects.filter(id=message_id, user = request.user).delete()
return redirect(reverse('dashboard:show', args=user_id))
show.html
{% for message in messages%}
<div class="message">
<p class='bg-primary wall_content'><strong>{{message.messageuser.first_name}} wrote:</strong></p>
<p class='wall_content'>{{message.message}}</p>
{% if message.id == request.user %}
<a href='{% url "dashboard:remove_message" user.id message.id %}'>Delete Message</a>
{% endif %}
{% for comment in comments %}
{% if message.id == comment.message.id %}
<p class='bg-success wall_content comment'><strong>{{comment.user.first_name}} wrote:</strong></p>
<p class='wall_content comment'>{{comment.comment}}</p>
{% endif %}
{% endfor %}
而不是 get
, you can use filter
which returns QuerySet
. Unlike the get
method, the filter
does not raise ObjectDoesNotExist
异常,如果没有匹配的对象,则只是 returns 一个空查询集。
删除空查询集没有坏处。
因此您可以将此行替换为:
Message.objects.filter(id=message_id).delete()
我在删除用户评论时遇到页面重定向问题。下面是我的代码。它删除了消息但给我这个错误: Message.objects.get(id=message_id).delete().
不存在消息匹配查询def remove_message(request, message_id):
Message.objects.get(id=message_id).delete()
return redirect(reverse('dashboard:show'))
^以上固定:
新问题,尝试仅删除当前用户的评论时无法显示我的删除按钮。代码如下:
views.py
def remove_message(request, user_id, message_id):
user = User.objects.get(id=request.session['user_id'])
Message.objects.filter(id=message_id, user = request.user).delete()
return redirect(reverse('dashboard:show', args=user_id))
show.html
{% for message in messages%}
<div class="message">
<p class='bg-primary wall_content'><strong>{{message.messageuser.first_name}} wrote:</strong></p>
<p class='wall_content'>{{message.message}}</p>
{% if message.id == request.user %}
<a href='{% url "dashboard:remove_message" user.id message.id %}'>Delete Message</a>
{% endif %}
{% for comment in comments %}
{% if message.id == comment.message.id %}
<p class='bg-success wall_content comment'><strong>{{comment.user.first_name}} wrote:</strong></p>
<p class='wall_content comment'>{{comment.comment}}</p>
{% endif %}
{% endfor %}
而不是 get
, you can use filter
which returns QuerySet
. Unlike the get
method, the filter
does not raise ObjectDoesNotExist
异常,如果没有匹配的对象,则只是 returns 一个空查询集。
删除空查询集没有坏处。
因此您可以将此行替换为:
Message.objects.filter(id=message_id).delete()