今天看django的时候,突然发现model里有个ImageField,原以为django的model只是一个ORM的框架,没想到连上传图片到服务器都可以搞定,于是结合例子尝试了一下。ImageField需要PIL的支持,所以没装PIL这个库的需要先安装。
然后在settings.py中加入 MEDIA_ROOT:
首先建立两个model:
class Item(models.Model):
name = models.CharField(max_length=250)
description = models.TextField()
class Meta:
ordering = ['name']
def __unicode__(self):
return self.name
@models.permalink
def get_absolute_url(self):
return ('item_detail', None, {'object_id':self.id})
class Photo(models.Model):
item = models.ForeignKey(Item)
title = models.CharField(max_length=100)
image = models.ImageField(upload_to='photos')
caption = models.CharField(max_length=250, blank=True)
class Meta:
ordering = ["title"]
def __unicode__(self):
return self.title
@models.permalink
def get_absolute_url(self):
return ('photo_detail', None, {'object_id':self.id})
class PhotoInline(admin.StackedInline):
model = Photo
class ItemAdmin(admin.ModelAdmin):
inlines = [PhotoInline]
然后在settings.py中加入 MEDIA_ROOT:
MEDIA_ROOT = '/var/www/gallery/media/'
由于我是用apache跑的,所以需要注意目录权限。
这里
upload_to='pho