python - Django-Edit and update the existing data in database with Form
问题描述
Hello the I need to edit and update the already existing row of data in the database.I guess that their is some problem in views.py. So I am not sure my views.py is right. Please check and tell me if any problem and how to proceed.
Thanks
models.py is :
class chefequipe(models.Model):
nom = models.CharField(max_length=200)
prenom = models.CharField(max_length=200)
matricule = models.CharField(max_length=200)
login = models.CharField(max_length=200)
password = models.CharField(max_length=200)
statut = models.CharField(max_length=200)
objects = models.Manager()
def __str__(self):
return self.matricule
the forms.py :
class ChefEquipeRegister(forms.Form):
nom= forms.CharField(required=True , widget=forms.TextInput)
prenom=forms.CharField(required=True , widget=forms.TextInput)
matricule=forms.CharField(required=True , widget=forms.TextInput)
login=forms.CharField(required=True , widget=forms.TextInput)
password=forms.CharField(required=True , widget=forms.PasswordInput)
statut=forms.CharField(required=True , widget=forms.TextInput)
the view.py
def updatechef(request , id):
var=models.chefequipe.objects.filter(id=id)
form_data = forms.ChefEquipeRegister(request.POST or None )
if form_data.is_valid():
chefequipe = models.chefequipe()
chefequipe.nom = form_data.cleaned_data['nom']
chefequipe.prenom= form_data.cleaned_data['prenom']
chefequipe.login = form_data.cleaned_data['login']
chefequipe.password = form_data.cleaned_data['password']
chefequipe.statut = form_data.cleaned_data['statut']
chefequipe.matricule = form_data.cleaned_data['matricule']
chefequipe.save()
context= {
'var' : var,
}
return render(request , 'administrateur/updatechef.html', context )
the page html
{% extends 'baseadmin.html' %}
{% block content %}
<form action="" method="post">
<div class="container">
<div class="columns is-mobile">
<div class="column is-half is-offset-one-quarter">
<form action="" method="post">
{% csrf_token %}
{% for var in var %}
<div class="content"> <h1> Modifier Information Chef D'équipe : {{var.prenom }} {{ var.nom }} </h1></div>
<label>Nom</label> <input id="nom" type="text" name="nom" value="{{ var.nom }}">
<label>Prenom</label> <input id="prenom" type="text" name="prenom" value="{{ var.prenom }}">
<label>Matricule</label> <input id="matricule" type="text" name="matricule" value="{{ var.matricule }}">
<label>Statut</label> <input id="statut" type="text" name="statut" value="{{ var.statut }}">
<label>Login</label> <input id="login" type="text" name="login" value="{{ var.login }}">
<label>Password</label> <input id="password" type="text" name="password" value="{{ var.password }}">
{% endfor %}
</div>
<input type="submit" value="Modifier" class="button is-primary">
</form>
</div>
</div>
</div>
{% endblock %}
i need to update the data exsting in my database
解决方案
你有什么理由使用表格而不是模型表格吗?ModelForms 用于创建或更新模型实例。然后当你得到 request.POST 数据时,你可以在 ModelForm 中分配你想要更新的模型实例(数据库行)。
模型.py
class ChefEquipeRegister(forms.ModelForm) ...
视图.py
if request.method == POST:
form = ChefEquipeRegister(request.POST, instance=**INSTANCE)
我认为您应该确保您的模型具有访问每个模型实例的主键,然后将您的表单重写为模型表单。跟随这里:https ://docs.djangoproject.com/en/2.2/topics/forms/modelforms/
推荐阅读
- vue.js - Mocha / jsdom“SecurityError:localStorage 不适用于不透明的来源”
- firebase-realtime-database - 使用flutter如何在同一个App中使用多个firebase实时数据库
- c - 我该怎么做才能使整数每次随机
- javascript - 刺激控制器:多次监听事件;如何删除事件侦听器并保留上下文?
- php - 准备好的语句不返回结果
- push-notification - 如何使用登录用户 ID 发送推送通知
- pyspark - Spark:在 XML 加载期间选择动态字段名称
- c# - 在我的控制台应用程序中找不到类型或命名空间“ServiceHost”
- javascript - 如何配置 app.json 以接受所有连接类型,例如 HTTP 请求?
- c# - 从另一个表单传递时为空 datagridview