簡體   English   中英

Django - 通用 UpdateView 以一種形式工作,但不能以其他形式工作

[英]Django - generic UpdateView works in one form but not in other

我正在為我的學校項目開發一個 Web 應用程序,我選擇了Django ,網上找到的所有教程都非常全面,我設法解決了我遇到的問題。

我有以下class based view試圖更新一個對象:

views.py

class MyPostUpdateView(UpdateView):
    model = Post
    fields = ('VideoURL', 'MainDescription')
    template_name = 'myapp/editpost.html'

然后,我在我的urls.py導入:

path('profile/account/my-posts/<int:pk>/edit/', MyPostUpdateView.as_view(),
     name='myapp-editpost')

然后,在我的HTML模板中,我有幾個<form>元素,但都屬於同一個<div>元素:

<div class="row">
  <div class="col-12 col-lg-7">
    <form method='post' class="card shadow-soft border p-4 mb-4">
      {% csrf_token %}
      <h5 class="mb-4">Form1</h5>
      <div class="form-group">
        <label for="MainDescription">Titlu</label> {{form.MainDescription|add_class:"form-control shadow-soft"}}
      </div>
      <div class="row">
        <div class="col">
          <button class="btn btn-primary btn-dark mt-2 animate-up-2" type="submit">Update form
                                1</button>
        </div>
      </div>
    </form>
  </div>
  <div class="col-12 col-lg-5">
    <form method='post' class="card shadow-soft border p-4 mb-4">
      {% csrf_token %}
      <h5 class="mb-4">Form2</h5>
      <div class="form-group">
        <label for="VideoURL">Video URL:</label> {{form.VideoURL|add_class:"form-control shadow-soft"}}
      </div>
      <div class="row">
        <div class="col">
          <button class="btn btn-primary btn-dark mt-2 animate-up-2 text-right" type="submit">Update form 2</button>
        </div>
      </div>
    </form>
  </div>
</div>

行為如下:如果我保留上述HTML代碼,我將無法更新這兩個字段中的任何一個。 但是,如果我將這兩個字段放在同一個<form>元素中,它會起作用:

<div class="row">
  <div class="col-12 col-lg-7">
    <form method='post' class="card shadow-soft border p-4 mb-4">
      {% csrf_token %}
      <h5 class="mb-4">Form1</h5>
      <div class="form-group">
        <label for="VideoURL">Video URL:</label> {{form.VideoURL|add_class:"form-control shadow-soft"}}
      </div>
      <div class="form-group">
        <label for="MainDescription">Titlu</label> {{form.MainDescription|add_class:"form-control shadow-soft"}}
      </div>
      <div class="row">
        <div class="col">
          <button class="btn btn-primary btn-dark mt-2 animate-up-2" type="submit">Update form
                                1</button>
        </div>
      </div>
    </form>
  </div>
  <div class="col-12 col-lg-5">
    <form method='post' class="card shadow-soft border p-4 mb-4">
      {% csrf_token %}
      <h5 class="mb-4">Form2</h5>
      <div class="form-group">
        <label for="VideoURL">Video URL:</label> {{form.VideoURL|add_class:"form-control shadow-soft"}}
      </div>
      <div class="form-group">
        <label for="MainDescription">Titlu</label> {{form.MainDescription|add_class:"form-control shadow-soft"}}
      </div>
      <div class="row">
        <div class="col">
          <button class="btn btn-primary btn-dark mt-2 animate-up-2 text-right" type="submit">Update form 2</button>
        </div>
      </div>
    </form>
  </div>
</div>

誰能給我解釋一下? 我問是因為我想將UpdateView功能擴展到屬於同一模型的其他字段。 謝謝!

在您的第一個代碼塊中,您將兩個字段放入了兩種不同的形式。 當您提交表單時,只會使用已提交的表單。

所以這就像在第一個桶里放 2 個蘋果,在第二個桶里放 2 個橙子。

想象一下,你把蘋果和橙子的數量分別改為 1 和 1。我要求你只帶一桶(你只能帶一桶)。 發生什么了? 蘋果的數量是 1,但我不知道您是否更改了第二個桶中的橙子數量。

把蘋果和橙子放在一個桶里,這樣當你把桶拿來的時候,我就能清楚地知道換了多少蘋果和橙子。

蘋果 = videourl 的內容

橙子 = 主要描述

桶 = 形式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM