如何将用户数据库中的数据转换为表单进行更新

时间:2017-10-17 00:40:19

标签: django django-forms django-views crud

我正在研究django并尝试按照djangoGirls教程制作一个简单的CRUD。但不幸的是,他们没有展示如何更新数据。

我已经InsertingReading/listing我该如何DeleteUpdate

我列出了具有编辑链接的用户:

{% extends 'bloodDonation/master.html' %}

{% block content %}
      <h1 class="center">LIST DONATORS<h1>
      <ul>
      {% for donator in donators %}
          <div class="row">
                  <div class="container">
                       <div class="col s12 blue-grey lighten-5 border_lighten">
                             <div class="col s12 m12 padding_normal">
                                    {{ donator.name }}
                                    <div id="icon" class="right">
                                           <a href="{% url 'edit_donator' %}" class="tooltipped" data-position="right" data-delay="50" data-tooltip="Editar Dados""> <i class="material-icons">edit</i></a>
                                    </div>
                             </div>
                        </div>
                  </div>
            </div>
      {% endfor %}
      </ul>

{% endblock %}  

正如您所看到的,我有a标记指向edit_donator网址 我如何传递所选/点击用户的ID /数据,以便我可以提取他的数据并将其丢入表单中?

表单创建:

class EditDonatorForm(forms.ModelForm):
      class Meta:
            model = Donator
            fields = [ 'name', 'age', 'email', 'phone', 'bloodType', 'observation' ]  

尝试传递ID:

 url(r'^donator/(?P<pk>\d+)/update/$', views.edit_donator, name='edit_donator'),

我如何从数据库中获取数据并将其放在表单中,以便我可以执行Update

1 个答案:

答案 0 :(得分:1)

您无需将数据发送到其他链接。您可以更新同一网址的详细信息。

将您的HTML更改为:

{% extends 'bloodDonation/master.html' %}

{% block content %}
  <h1 class="center">LIST DONATORS<h1>
  <ul>
  {% for donator in donators %}
      <div class="row">
              <div class="container">
                   <div class="col s12 blue-grey lighten-5 border_lighten">
                         <div class="col s12 m12 padding_normal">
                                {{ donator.name }}
                                <div id="icon" class="right">
                                       <a href="yoururl/?edit-donator={{ donator.id }}" class="tooltipped" data-position="right" data-delay="50" data-tooltip="Editar Dados""> <i class="material-icons">edit</i></a>
                                </div>
                         </div>
                    </div>
              </div>
        </div>
  {% endfor %}
  </ul>

{% endblock %}

在你的视图中写,

if 'edit-donator' in request.GET:
    edit_data = YourModel.objects.get(id=request.GET['edit-donator'])
    form = EditDonatorForm(instance=edit_data)

这将从模型中获取数据并将其传递给模板。 现在您可以执行更新。 希望这有帮助:)