使用表单创建对象时如何保存图像路径

时间:2014-08-29 11:56:24

标签: python django

我在django 1.6中有这样的模型:

class Instance(models.Model):
  ...
  image = models.ImageField(upload_to='flats_photo',null=True, blank=True)
  ...

形式:

class InstanceForm(ModelForm):
    class Meta:
       model = Instance
       fields=[...,'image',...]

当我创建新对象时,我使用这样的视图:

def add_instance(request):
   if request.POST:
      form=InstanceForm(request.POST)
      if form.is_valid():
         f = InstanceForm(request.POST)
         new_instance=f.save()

   else:form=InstanceForm()

   locals().update(csrf(request))
   return render_to_response(...)

新对象的所有字段都会创建,但不会创建字段图像。没有图像。在django管理员中我看到:图像没有选择文件。当我从管理员添加对象时,一切正常。如何解决这个问题

1 个答案:

答案 0 :(得分:1)

文件数据不在request.POST它在request.FILES

https://docs.djangoproject.com/en/dev/topics/http/file-uploads/#handling-uploaded-files-with-a-model

将您的功能更改为

def add_instance(request):
   if request.POST:
      form=InstanceForm(request.POST, request.FILES)
      if form.is_valid():
         new_instance=form.save()
   else:
      form=InstanceForm()

   locals().update(csrf(request))
   return render_to_response(...)