Django - MultiValueDictKeyError request.POST
Я получаю MultiValueDictKeyError на моем представлении обновления, когда я добавляю, я могу успешно добавить, но когда я хочу обновить, я получаю эту ошибку. Я использовал те же коды, продублировав их 4 раза, но на этот раз я не смог понять, почему у меня возникает ошибка.
models.py;
class problemduyuru(models.Model):
olusturulmatarihi = models.TextField(max_length=100, null=True)
duyurutipi = models.TextField(max_length=100, null=True)
incidentno = models.TextField(max_length=100, null=True)
baslangiczamani = models.TextField(max_length=100, null=True)
aciklama = models.TextField(max_length=100, null=True)
views.py- update def
def problemduyurusuupdate(request, id):
problemmember = problemduyuru.objects.get(id=id)
problemmember.duyurutipi = request.POST['duyurutipi']
problemmember.incidentno = request.POST['incidentno']
problemmember.baslangiczamani = request.POST['baslangiczamani']
problemmember.aciklama = request.POST['aciklama']
problemmember.olusturulmatarihi = request.POST['olusturulmatarihi']
problemmember.save()
messages.success(request, 'Alarmlar was updated successfully!')
return redirect('/problemduyurusu')
html;
<form class="form-horizontal" action="problemduyurusuupdate/{{ problemmembers.id }}" method="POST">
{% csrf_token %}
<div class="bd-callout bd-callout-danger">
<div class="bd-calloutic bd-callout-dangeric ">
<div class="dangericon"></div>
<h4 id="asynchronous-methods-and-transitions" style="color: #e70800;"><b>Technology Announcements</b></h4>
<h7 id="asynchronous-methods-and-transitions" style="color:red; font-weight: 400; ">Problem Duyurusu</h7></div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-duyuru" id="inputGroup-sizing-default" style="font-weight: 500;">Duyuru Tipi:</span>
</div>
<input type="text" class="form-control" value="{{ problemmembers.duyurutipi }}" name="dduyurutipi" id="dduyurutipi" aria-label="Default" aria-describedby="inputGroup-sizing-default">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-duyuru" id="inputGroup-sizing-default" style="font-weight: 500;">Incident No:</span>
</div>
<input type="text" class="form-control" value="{{ problemmembers.incidentno }}" name="dincidentno" id="dincidentno" aria-label="Default" aria-describedby="inputGroup-sizing-default">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-duyuru" id="inputGroup-sizing-default" style="font-weight: 500;">Başlangıç Zamanı:</span>
</div>
<input type="text" class="form-control" value="{{ problemmembers.baslangiczamani }}" name="dbaslangiczamani" id="dbaslangiczamani" aria-label="Default" aria-describedby="inputGroup-sizing-default">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-duyuru" id="inputGroup-sizing-default" style="font-weight: 500;">Oluşturma Tarihi:</span>
</div>
<input type="text" class="form-control" value="{{ problemmembers.olusturulmatarihi }}" name="dolusturulmatarihi" id="dolusturulmatarihi" aria-label="Default" aria-describedby="inputGroup-sizing-default">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-duyuru" id="inputGroup-sizing-default" style="font-weight: 500;">Açıklama:</span>
</div>
<input type="text" class="form-control" value="{{ problemmembers.aciklama }}" name="daciklama" id="daciklama" aria-label="Default" aria-describedby="inputGroup-sizing-default">
</div>
<br>
</div>
Попробуйте использовать MultiValueDict's get
это поможет предотвратить любое умолчание, если оно не существует. Поэтому замените request.POST('your value')
на request.POST.get('your value'), False
. Общим правилом является dict.get(<key>, <default>)
.
Один пример в вашем коде будет выглядеть так:
problemmember.duyurutipi = request.POST.get('duyurutipi', False)
Сделайте это и для другого значения.