formularios - post django
Django Imagefield no funciona correctamente a través de ModelForm (1)
Estoy seguro de que estoy haciendo algo realmente obviamente estúpido, pero he estado tratando de resolverlo por unas horas y nada está saltando hacia mí.
Estoy usando un ModelForm para poder exponer algunos campos de un modelo para su edición. 2x ImageField, 1x TextField. El Formulario se procesa y TextField funciona. Los dos ImageFields no funcionan y es por eso que estoy aquí hoy.
Estoy usando Django 1.0.2
Aquí está el código relevante (pregunte si necesita más, y no incluyo el HTML porque esa parte parece funcionar bien):
Modelo:
class Company(models.Model):
#...
logo = models.ImageField(upload_to=''logos'', blank=True)
intro_pic = models.ImageField(upload_to=''intropics'', blank=True)
intro_text = models.TextField(blank=True)
Ver y forma:
def admin_edit(request, company_slug):
company = get_object_or_404(Company, slug = company_slug)
f = AdminEditForm(instance = company)
if request.method == ''POST'':
f = AdminEditForm(request.POST, instance = company)
if f.is_valid():
print "Processing form"
print f.cleaned_data[''intro_pic'']
f.save()
return render_to_response(''uadmin/edit.html'', {''company'':company, ''f'':f}, RequestContext(request))
class AdminEditForm(ModelForm):
class Meta:
model = Company
fields = [''logo'', ''intro_pic'', ''intro_text'']
Bueno, me siento como un idiota. Para que Django pueda procesar los archivos cargados, debe pasar la variable request.FILES al formulario (tiene sentido, ¿no?)
En mi caso, la siguiente línea va desde:
f = AdminEditForm(request.POST, instance = company)
A:
f = AdminEditForm(request.POST, request.FILES, instance = company)
Otra cosa que debes comprobar (si te encuentras con algo como esto en el futuro) es que tu formulario es multiparte. Su etiqueta <form>
debería verse más o menos así:
<form enctype="multipart/form-data" method="post" action="">