如何在没有查询错误的情况下删除用户消息?

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()