我正在编写我的第一个使用ImageField的Django应用程序,但遇到了困难。问题在于我的图片没有上传成功。我查看了尽可能多的示例,但不确定哪里出了问题。
我试图通过查看upload_to目录的位置来验证我的照片是否已上传。当表单在网页上显示时,正确的上传文件按钮会显示。当我点击提交后,下面的代码会执行,但是没有任何图像被上传。
根据upload_to的设置,我期望看到图像上传到以下位置之一:myproject/photos或myproject/media/photos,对吗?
我在这里做错了什么明显的事情吗?我该如何上传我的图片?
--------------settings.py--------------
我试图通过查看upload_to目录的位置来验证我的照片是否已上传。当表单在网页上显示时,正确的上传文件按钮会显示。当我点击提交后,下面的代码会执行,但是没有任何图像被上传。
根据upload_to的设置,我期望看到图像上传到以下位置之一:myproject/photos或myproject/media/photos,对吗?
我在这里做错了什么明显的事情吗?我该如何上传我的图片?
--------------settings.py--------------
MEDIA_ROOT = '/home/me/django_projects/myproject/media/'
MEDIA_URL = '/media/'
--------------model.py-------------
class Person(models.Model):
lastName = models.CharField(max_length=20)
firstName = models.CharField(max_length=20)
image = models.ImageField(upload_to='photos', blank=True, null=True)
# save executes but no image is saved.
# Because images are uploaded along with a new entry, I needed a special
# work around to get the self.id
def save(self):
for field in self._meta.fields:
if field.name == 'image':
if self.id is not None:
#save image now
field.upload_to = 'photos/%d' % self.id
else:
#Save image later
saveImageLast = True
super(Customer, self).save() # should create self.id if not already
if saveImageLast == True:
field.upload_to = 'photos/%d' % self.id
super(Customer, self).save()
print "save complete" #prints, but no image ...?
--------------forms.py-------------
class PersonForm(ModelForm):
class Meta:
model = Person
fields = ( 'lastName', 'firstName', 'image' )