我知道我的代码不是最优的,因为我只是Django的初学者,所以不要太难我
这是我的代码:
views.py
class ComposantUpdate(UpdateView):
model = configuration
fields = '__all__'
template_name = 'accueil/exploitation/update_composant.html'
update_composant.html
<form action="{% url 'composant_update' pk=composant.id %}" method="post">
{% csrf_token %}
<div class="form-group">
{% for field in form %}
<label class="col-md-6 offset-md-3 nom_champ"> {{field.label_tag}}</label>
<input class="col-md-4 offset-md-4 contenu_champ" type="text" name="{{ field.label }}" id="{{ field.id_for_label }}" value="{{ field.value }}"/>
{%endfor%}
<br>
<br>
<button class="col-md-6 offset-md-3 btn btn-primary" type="submit" value="Update" /> Mettre à jour </button>
</div>
</form>
urls.py
path('update_composant/<int:pk>', views.ComposantUpdate.as_view(),
name='composant_update'),
models.py
class configuration(models.Model):
Num_ordre = models.CharField(max_length=15)
Composant = models.CharField(max_length=15)
Designation = models.CharField(max_length=15)
Qte_servie = models.IntegerField()
Qte_a_servir = models.IntegerField()
Lot = models.CharField(max_length=15)
Categorie = models.CharField(max_length=15)
Famille = models.CharField(max_length=15)
def __str__(self):
return '%s %s %s' % (self.Num_ordre, self.Designation, self.Lot)
当我转到表单的url时,所有字段都会获得数据库的内容,这是我所期望的,但如果我修改了#34; Lot&#34;字段并单击提交,我的数据库根本没有更新&#34; Lot&#34;。你知道为什么吗?有关信息,我会被重定向到&#39; composant_update&#39;查看并且没有错误上升
答案 0 :(得分:0)
事实上,我没有正确地编写我的html,输入中的属性“name”应该是{{field.html_name}}而不是{{field.label}}。
这不起作用:
<input class="col-md-4 offset-md-4 contenu_champ" type="text" name="{{ field.label }}" id="{{ field.id_for_label }}" value="{{ field.value }}"/>
这有效:
<input class="col-md-4 offset-md-4 contenu_champ" type="text" name="{{ field.html_name}}" id="{{ field.id_for_label }}" value="{{ field.value }}"/>
有关详细信息,请参阅https://docs.djangoproject.com/en/2.0/topics/forms/#s-looping-over-the-form-s-fields
感谢Willem Van Onsem!