Cómo extraer el objeto de archivo de Django Form FileField
Frecuentes
Visto 7,905 veces
2
He creado un ModelForm con campos, title
, file
y content
. aquí file
es un campo de archivo(). Pero no puedo llamar al save()
método de esta forma debido a algunas razones. Así que tengo que crear manualmente un objeto modelo y asignar valores limpios a ese objeto. Todo funcionó excepto ese FileField. El archivo no se guarda. ¿Cómo puedo arreglar esto? ¿Es el método correcto para extraer FileField?
Forma
class TestForm(forms.ModelForm):
class Meta:
model = Test
fields = ('title','file', 'content',)
Vistas.py
form = TestForm(request.POST,request.FILES)
if form.is_valid():
content = form.cleaned_data['content']
file = form.cleaned_data['file']
title = form.cleaned_data['title']
fax = Fax()
fax.title = title
fax.file = file
fax.content = content
fax.save()
Aquí el archivo no se guarda. ¿Cómo puedo arreglar esto? ¡Cualquier ayuda será apreciada!
3 Respuestas
6
has usado enctype="multipart/form-data"
en su formulario Parece que el código está bien.
Respondido el 03 de Septiembre de 12 a las 10:09
2
Utilice este tipo de validación. esto puede funcionar
if request.method == 'POST':
form = ModelFormWithFileField(request.POST, request.FILES)
if form.is_valid():
# file is saved
form.save()
return HttpResponseRedirect('/success/url/')``
Respondido 08 ago 13, 07:08
0
Creo que puedes usar
request.FILES['file']
para obtener el objeto de archivo
Respondido 28 ago 12, 13:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas django django-models django-forms django-file-upload or haz tu propia pregunta.
en lugar de form.cleaned_data['file'], use request.FILES['file'] - vea docs.djangoproject.com/en/dev/topics/http/file-uploads/… - JamesO
¿Por qué no puede llamar al método de guardar en el formulario? La debería ser la forma correcta de hacerlo. - super9
@super9 es porque he creado más de un objeto con eso. Hay un bucle en el código, que he omitido para describirlo fácilmente: Jubin Thomas