我在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管理员中我看到:图像没有选择文件。当我从管理员添加对象时,一切正常。如何解决这个问题
答案 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(...)