首页 > 解决方案 > Django 编辑表单创建新实例

问题描述

我正在创建一个表单,允许用户编辑保存到 django 数据库的事件。问题是当它运行代码时,在数据库中创建了一个新实例,旧实例保留在数据库中,然后两者都可以在站点中查看

下面是(部分)用于调用编辑视图和编辑数据库中的实例的 HTML 表单

<div class="modal-footer">
        <form action="edit/" method="POST">
          {% csrf_token %}
          <input type="hidden" name="event_edit_id" id="event_edit_id">
          <input class="btn btn-primary btn-block" type="submit" value="Save Changes"/>
        </form>
      </div>

接下来是用于编辑随表单发送的 id 的事件的视图:

def edit(request):
if request.method == "POST":
    event_id = int(request.POST.get('event_edit_id'))
    event = Events.objects.get(pk=event_id)
    form = AddEventForm(request.POST or None, instance=event)

    if form.is_valid():
        form.save()
        return redirect('calendar')

我知道我错过了一些东西,但我只是看不到它,任何帮助表示赞赏!

编辑 我注意到,当提交代码进行编辑时,它直接进入 /calendar/ 而不是 /calendar/edit 所以这是我用来映射文件的 urls 文件

urlpatterns = [
path('', views.calendar, name="calendar"),
path('delete/', views.delete, name="delete"),
path('edit/', views.edit, name="edit"),
]

标签: pythondjango

解决方案


没有看到你的表单,我只能猜测没有任何填充edit_event_id,所以表单被保存为一个新事件。目前,edit_event_id不是绑定字段,因此它不包含任何数据。


推荐阅读