我正在研究django并尝试按照djangoGirls
教程制作一个简单的CRUD。但不幸的是,他们没有展示如何更新数据。
我已经Inserting
,Reading/listing
我该如何Delete
和Update
?
我列出了具有编辑链接的用户:
{% 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
?
答案 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)
这将从模型中获取数据并将其传递给模板。 现在您可以执行更新。 希望这有帮助:)