我正在寻找有关我知道的非常基本的问题的帮助,但是我无法解决它,而且我不知道我在哪里做错了事(像往常一样)
所以基本上我已经创建了一个模型形式“ formulaire_equipement”
class formulaire_equipement(forms.ModelForm):
class Meta:
model = Formulaire
fields = '__all__'
基于模型“ Formulaire”:
class Formulaire(models.Model) :
nom_equipement = models.CharField(max_length=200)
constructeur = models.CharField(max_length=100)
choix_categorie = [
('Encodeur', 'Encodeur'),
('Modulateur', 'Modulateur'),
('Packager', 'Packager'),
('Playout', 'Playout')
]
categorie = models.CharField(max_length=100, choices=choix_categorie)
reference = models.CharField(max_length=100, null=True)
IP = models.CharField(max_length=15)
identifiant = models.CharField(max_length=50, null=True)
mot_de_passe = models.CharField(max_length=100, null=True)
从那里,我可以提交表单,并且已经创建了一个视图,可以在其中访问和显示用户提交的数据。
<h3> Nom : {{Formulaire.nom_equipement}} </br>
Constructeur : {{Formulaire.constructeur}} </br>
Catégorie : {{Formulaire.categorie}} </br>
Référence : {{Formulaire.reference}} </br>
IP management : <a href="http://{{Formulaire.IP}}/"> {{Formulaire.IP}} </a> </br>
Identifiant de connexion : {{Formulaire.identifiant}} </br>
Mot de passe : {{Formulaire.mot_de_passe}} </br> </h3>
<a class="btn" method="POST" href="{% url 'modifier_equipement' pk=Formulaire.pk %}"> modifier équipement </a>
<a class="btn" href="{% url 'supprimer_equipement' pk=Formulaire.pk %}"> supprimer équipement </a>
</div>
当我尝试通过url编辑先前创建的表单时出现问题
path('fiche/<int:pk>/edit/', views.edit_formulaire, name='modifier_equipement')
引用视图“ edit_formulaire”:
def edit_formulaire(request, pk):
this_form = Formulaire.objects.get(id=pk)
form = formulaire_equipement(request.POST or None, instance=this_form)
if form.is_valid():
form.save()
context = {
'Formulaire':form
}
return render(request, 'adress_hub/edit_formulaire.html', context)
然后从那里得到“视图search.views.edit_formulaire没有返回HttpResponse对象。而是返回了None。”错误,我知道这是由于某些原因导致表单无效,因此“ if”循环未得到验证,然后我跌至视图的末尾,该视图未返回HttpResponse对象。
但是我不知道为什么表格无效,或者我做错了什么...
答案 0 :(得分:0)
好吧,我对此进行了编辑以使其更加有用。 您的视图必须类似于this。我会尝试这种方式:
def edit_formulaire(request, pk):
this_form = Formulaire.objects.get(id=pk)
if request.method == 'POST':
form = formulaire_equipement(request.POST or None, instance=this_form)
if form.is_valid():
form.save()
# Redirect the user after submitting the form, for example:
return HttpResponseRedirect('/thanks/')
else:
form = formulaire_equipement(instance=this_form)
context = {'Formulaire':form}
return render(request, 'adress_hub/edit_formulaire.html', context)
无论如何,您的帖子出了点问题,您想知道为什么以一种简单的方式尝试添加:
if form.is_valid():
# your code
else:
print(form.errors)
让我知道是否可行!,
答案 1 :(得分:0)
编辑:我尝试过
def edit_formulaire(request, pk):
this_form = Formulaire.objects.get(id=pk)
form = formulaire_equipement(request.POST or None, instance=this_form)
if form.is_valid():
form.save()
context = {
'Formulaire':form
}
return render(request, 'adress_hub/edit_formulaire.html', context)
else:
return render(request, 'adress_hub/formulaire.html', locals())
现在,我将使用数据访问表单!但是当我保存表单时,它不会替换表单,而是创建一个新条目。