首页 > 解决方案 > Django,删除记录有问题吗?

问题描述

我有一个基于 Django 类的删除视图

它由模板调用(DetailsView,底部有一个按钮,我希望能够单击该按钮以删除记录)

模板中的代码是这样的:

<div>
  <a href="{% url 'update_candidate' object.pk %}" class="button">Edit</a>
</div>

<form method="post" action="{% url 'delete_candidate' object.pk %}" class="inline">
  {% csrf_token %}
  <input type="hidden" name="object_pk" value="{{ object.pk}}">
  <button type="submit" name="delete" value="delete" class="link-button">
  </button>
</form>

update_candidate 使用 object.pk 工作...一个页面显示了正确的对象,但是如果我尝试删除我会出错

请求方法:POST 请求 URL: http: //127.0.0.1 :8000/candidates/delete_candidate/1/ Django 版本:2.0.6 异常类型:错误配置异常值:DeleteCandidateView 缺少 QuerySet。定义 DeleteCandidateView.model、DeleteCandidateView.queryset,或覆盖 DeleteCandidateView.get_queryset()。

POST 变量值 object_pk '1' csrfmiddlewaretoken
'Vp3McmK88riynpBJ9U2yPRXNvI3i8ufeepY2FnRt1cktW7aw48p7JsYTnFWvk4kD'

删除“删除”

有没有人对如何解决这个问题有任何想法?

标签: djangodjango-formsdjango-views

解决方案


消息说使用通用 CBV DetailViewDeleteView的某些视图设置错误,在这种情况下,DeleteCandidateView 可能缺少以下一些必需属性:

  • model,
  • queryset,

或者你需要覆盖DeleteCandidateView.get_queryset


这取决于您使用的基于通用类的视图,但它通常看起来像:

class DeleteCandidateView(DetailView):

    model = DeleteCandidate # or whatever your model is called

推荐阅读