python - tutorial - Django ModelForm Imagefield Upload
upload image django model (2)
No debería tener que configurar newproject.photo
para newproject.photo
request.FILES[''photo'']
(en realidad esto aquí probablemente rompe su código). Simplemente guarde el addprojectform
con addprojectform.save()
lugar de newproject = addprojectform.save(commit=False)
. Vea más información aquí: https://docs.djangoproject.com/en/1.5/topics/http/file-uploads/#handling-uploaded-files-with-a-model
Soy bastante nuevo en Django y encontré un problema al manejar la carga de imágenes usando ModelForm. Mi modelo es el siguiente:
class Project(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=2000)
startDate = models.DateField(auto_now_add=True)
photo = models.ImageField(upload_to="projectimg/", null=True, blank=True)
Y el modelo es el siguiente:
class AddProjectForm(ModelForm):
class Meta:
model = Project
widgets = {
''description'': Textarea(attrs={''cols'': 80, ''rows'': 50}),
}
fields = [''name'', ''description'', ''photo'']
Y la función de vista es:
def addProject(request, template_name):
if request.method == ''POST'':
addprojectform = AddProjectForm(request.POST,request.FILES)
print addprojectform
if addprojectform.is_valid():
newproject = addprojectform.save(commit=False)
print newproject
print request.FILES
newproject.photo = request.FILES[''photo'']
newproject.save()
print newproject.photo
else:
addprojectform = AddProjectForm()
newProposalNum = projectProposal.objects.filter(solved=False).count()
return render(request, template_name, {''addprojectform'':addprojectform,
''newProposalNum'':newProposalNum})
la plantilla es:
<form class="bs-example form-horizontal" method="post" action="">{% csrf_token %}
<h2>Project Name</h2><br>
{{ addprojectform.name }}<br>
<h2>Project Description</h2>
{{ addprojectform.description }}<br>
<h2>Image Upload</h2><br>
{{ addprojectform.photo }}<br>
<input type="submit" class="btn btn-success" value="Add Project">
</form>
¿Alguien puede ayudarme o podría dar un ejemplo de carga de imágenes? ¡Gracias!
Ok gracias a todos Me encontré cometiendo un error estúpido. Debería agregar enctype="multipart/form-data"
en <form>
no, no cargará el archivo.