models.py に次のコードがあります。
def product_upload_to(instance, filename):
return 'img/products/%s/large/%s' % (instance.uuid, filename,)
def thumb_upload_to(instance, filename):
return 'img/products/%s/thumb/%s' % (instance.uuid, filename,)
class Product(BaseModel):
company = models.ForeignKey(Company, null=True, blank=True)
title = models.CharField(max_length=128)
description = models.TextField()
category = models.ForeignKey(ProductCategory, null=True, blank=True)
price = models.DecimalField(max_digits=5,decimal_places=2,verbose_name="Cena")
image = models.ImageField(upload_to=product_upload_to,null=True,blank=True)
thumb = models.ImageField(upload_to=thumb_upload_to,null=True,blank=True)
def save(self, force_update=False, force_insert=False, thumb_size=(120,120)):
image = Image.open(self.image)
image.thumbnail(thumb_size, Image.ANTIALIAS)
temp_handle = StringIO()
image.save(temp_handle, 'png')
temp_handle.seek(0) # rewind the file
suf = SimpleUploadedFile(os.path.split(self.image.name)[-1],
temp_handle.read(),
content_type='image/png')
self.thumb.save(suf.name+'.png', suf, save=False)
super(Product, self).save(force_update, force_insert)
私は修正できない問題に遭遇しました: - 画像パスは元の画像 (画像フィールド) に対して正しく生成されますが、サムネイル (サム フィールド) に対しては生成されません。
次のようになります。
- img/products/6fddb163-435b-11e3-98fe-843835614698/large/IMG_0171.JPG (イメージでいいです)
- img/products/None/thumb/IMG_0171.JPG.png (親指に悪い)
また、管理パネルのパスが絶対パス (例: http://localhost:8000/admin/app/product/1/img/products/6fddb163-435b-11e3-98fe-843835614698/large/IMG_0171.JPG
) であるため、適切に生成されているかどうかもわかりません。パスに到達できません。img ディレクトリは django プロジェクト ディレクトリに直接作成されています。これを静的ディレクトリ内に作成するように変更する方法がわかりません。
サムパスと管理者パスの問題を解決するのを手伝ってもらえますか?