dfr*_*jas 1 django file-upload image-uploading django-forms
我有点沮丧试图从表单更新照片。我有这个:
<form action="/subir-fotos/{{campana_id}}/{{point_id}}/" method="POST" enctype="multipart/form-data" id="form_tomaFoto{{page}}">{% csrf_token %}
<input type="hidden" value="{{i.titulo_foto.id}}" name="titulo">
<p><input type="file" accept="image/*" name="foto" required></p>
<p><input type="submit" value="Enviar foto" class="boton"></p>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
我的型号:
class InteraccionFotos(models.Model):
campana = models.ForeignKey('dashboard.Campana')
titulo_foto = models.ForeignKey('actividad_fotos.TitulosFotos')
punto_interaccion = models.ForeignKey(PuntoInteraccion)
foto = models.ImageField(upload_to='.',blank=True,null=True)
Run Code Online (Sandbox Code Playgroud)
然后,在我看来,我有这个:
class SubeFotoView(FormView):
form_class = FilebabyForm
success_url = '/'
template_name = 'tomar_fotos.html'
def form_valid(self,form):
form.save(commit=True)
messages.success(self.request, 'File uploaded!')
return super(SubeFotoView, self).form_valid(form)
def post(self, request, *args, **kwargs):
campana = self.kwargs.get('campana_id')
point_id = self.kwargs.get('point_id')
titulo_foto = request.POST['titulo']
foto = request.FILES['foto']
crea_foto = InteraccionFotos.objects.filter(pk=1,campana_id=3,punto_interaccion_id=5).update(foto=foto)
data = {}
data['success'] = "Foto subida con exitosamente"
return HttpResponse(json.dumps(data), content_type='application/json')
Run Code Online (Sandbox Code Playgroud)
正如您在crea_foto变量中看到的,我有一个查询集,我在其中创建了一个过滤器,然后更新了该字段foto,但我无法使其正常工作。事情是,如果改为过滤,我做一个查询集create工作正常并创建照片,如果我从头上传或更新照片也可以在管理员中正常工作。只发生在查询集上update,有什么解决方法的线索吗?
PS:我正在使用 Boto,但由于图像是用其他方法上传的,因此 Boto 是问题所在。
这真的很简单,只需在 POST 方法中添加:
m = InteraccionFotos.objects.get(pk=1)
m.foto = request.FILES['foto']
m.save()
Run Code Online (Sandbox Code Playgroud)