Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 没有使用UpdateView django更新数据库_Python_Django_Django Models_Django Forms - Fatal编程技术网

Python 没有使用UpdateView django更新数据库

Python 没有使用UpdateView django更新数据库,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,我知道我的代码不是最优的,因为我只是Django的初学者,所以不要对我太苛刻 这是我的密码: views.py class ComposantUpdate(UpdateView): model = configuration fields = '__all__' template_name = 'accueil/exploitation/update_composant.html' 更新_composant.html <form action="{% url 'c

我知道我的代码不是最优的,因为我只是Django的初学者,所以不要对我太苛刻

这是我的密码:

views.py

class ComposantUpdate(UpdateView):
    model = configuration
    fields = '__all__'
    template_name = 'accueil/exploitation/update_composant.html'
更新_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>

当我转到表单的url时,所有字段都会得到我所期望的数据库内容,但如果我修改“Lot”字段并单击提交,我的数据库根本不会用新值“Lot”更新。你知道为什么吗?作为参考,我确实被重定向到'composant_update'视图,并且没有出现任何错误

事实上,我没有正确编写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 }}"/>

有关更多信息,请参阅


谢谢威廉·范昂森

您不是正在将
标签
名称
交换吗?您忘了在模板中呈现最终表单的验证错误。如果您的表单有错误,它将被重新显示,而不会显示任何错误信息。将错误重新添加到表单中(如何做到这一点在FineManual和许多文章中都有记录),这样你的生活会更轻松,应用程序的用户也会更开心
<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 }}"/>