我知道关于这个问题存在很多话题,但是我仍然没有找到解决方案。希望你能理解我! 我正在从模式形式上传图片。问题是,当我尝试上传图片时,图片返回了
django.utils.datastructures.MultiValueDictKeyError: 'imagen'
尝试找到一个解决方案,我尝试打印填写的表单,然后按下continue
按钮将其保存,这是控制台中的输出:
<tr>
<th>
<label for="id_monto_boleta">Monto boleta:</label>
</th>
<td>
<input type="number" name="monto_boleta" value="900" required id="id_monto_boleta" />
</td>
</tr>
<tr>
<th>
<label for="id_imagen">Imagen:</label>
</th>
<td>
<ul class="errorlist">
<li>Este campo es obligatorio.</li>
</ul>
<input type="file" name="imagen" required id="id_imagen" />
</td>
</tr>
它没有价值...
views.py
def agregar_boleta_honorario(request):
if request.method == 'POST':
form = FormRegistrarBoletaHonorario(request.POST, request.FILES)
print(form)
else:
form = FormRegistrarBoletaHonorario()
return save_all(request, form, 'boletas_honorarios/agregar_boleta_honorario.html')
forms.py
class FormRegistrarBoletaHonorario(forms.ModelForm):
class Meta:
model = Boleta_Honorario
fields = (
'rut_paciente',
'rut_medico',
'fecha_boleta',
'monto_boleta',
'imagen',
)
models.py
class Boleta_Honorario(models.Model):
rut_paciente = models.ForeignKey(Paciente, on_delete=models.CASCADE)
rut_medico = models.ForeignKey(Medico, on_delete=models.CASCADE)
numero_boleta_honorario = models.IntegerField(default=0)
fecha_boleta = models.DateTimeField()
monto_boleta = models.IntegerField(default=0)
imagen = models.ImageField(upload_to='boletas_honorarios_adjuntos/', blank=True)
def __str__(self):
return str(self.id)
模板
{% load crispy_forms_tags %}
<form method="post" enctype="multipart/form-data" data-url="{% url 'boletas_honorarios:agregar_boleta_honorario' %}" id="verificar" class="create-form">
{% csrf_token %}
<div class="modal-header">
<h5 class="modal-title">Registrar Boleta honorario</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
{{form|crispy}}
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Agregar boleta honorario</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
</div>
</form>