【问题标题】:Python Django: deleting an objectPython Django:删除对象
【发布时间】:2023-02-14 02:45:36
【问题描述】:

我想删除 Django 中的一个对象,但其他 Stack Overflow 问题都无法解决我的问题。我查看了this one,但它似乎不起作用。我的删除目标代码(在视图文件中)如下所示:

@login_required
def delete_entry(request, entry_id):
    """Delete an existing entry."""
    if request.method != 'POST':
        # No data submitted; create a blank form.
        form = TopicForm()
    else:
        # POST data submitted; process data.
        form = TopicForm(data=request.POST)
        if form.is_valid():
            new_topic = form.delete(commit=False) ### code to delete object
            new_topic.owner = request.user
            new_topic.save()
            return redirect('learning_logs:topics')

    # Display a blank or invalid form.
    context = {'topic': topic, 'form': form}
    return render(request, 'learning_logs/new_entry.html', context)

在 URLs.py 中:

path('delete_entry/<int:entry_id>', views.delete_entry, name='delete_entry'),

我想使用 Bootstrap4 按钮(在模式内)删除条目,(因此没有任何重定向到另一个确认页面)。 Image. 不幸的是,这不起作用。我刚收到一个服务器错误,提示 NoReverseMatch at /delete_entry/6。 有人能告诉我这是什么意思吗?

【问题讨论】:

  • 关于“网址.py”: 不是很正常吗“网址.py”

标签: python-3.x django django-views django-urls


【解决方案1】:

您似乎正在尝试调用表单上的 delete 方法。如果你想删除对象,你应该在对象上调用它:

my_object = MyModel.objects.get(id=entry_id) # Retrieve the object with the specified id
my_object.delete() # Delete it

Here 是相关的 Django 文档。

我认为您正在寻找 DeleteView

【讨论】:

  • 我会将此代码放在“if request.method != 'post'”或 else 块中吗?抱歉这么无知!我是 Django 的新手。
  • 您可以将它放在任何地方,使用传递给视图的 entry_id 参数来检索要删除的对象,然后使用 .delete() 方法将其删除。或者像这里一样使用 DeleteView:stackoverflow.com/questions/5531258/…
猜你喜欢
  • 2013-10-23
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 2018-10-17
  • 1970-01-01
  • 2020-01-31
相关资源
最近更新 更多