你好,我需要编辑和更新数据库中已经存在的数据行。我想这是views.py中的问题。所以我不确定我的views.py是否正确。请检查并告诉我是否有问题以及如何进行。
谢谢
models.py是:
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
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)
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 )
页面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 %}
我需要更新数据库中现有的数据
答案 0 :(得分:0)
您为什么要使用Form而不是ModelForm? ModelForms用于创建或更新模型实例。然后,当您收到request.POST数据时,可以在ModelForm中分配要更新的模型实例(数据库行)。
models.py
class ChefEquipeRegister(forms.ModelForm) ...
views.py
if request.method == POST:
form = ChefEquipeRegister(request.POST, instance=**INSTANCE)
我认为您应该确保您的模型具有访问每个模型实例的主键,然后将您的Form重写为ModelForm。请按照此处操作:https://docs.djangoproject.com/en/2.2/topics/forms/modelforms/
答案 1 :(得分:0)
就你而言:
views.py
.....
.....
.....
if form.is_valid():
object_chefequipe = chefequipe.objects.get(id=id)
form = ChefEquipeRegister(request.POST, instance=object_chefequipe)
form.save()