0

私はdjango1.4、python 2.7、Memcache、python-memcached、easy-thumbnailsを使用しています。

キャッシュされたデータを使用してアイテムページにアクセスしようとすると、次のテンプレートエラーが発生します。

Couldn't get the thumbnail uploads/items/item_images/logo.jpeg: 'ImageFieldFile' object has no attribute 'instance'

シェルのデータベースから問題のデータにアクセスすると、次のようになります。

>>> log = item.get_logo()
>>> logo
<ImageFieldFile: uploads/items/item_images/logo.png>
>>> logo.instance
<Media: uploads/items/item_images/logo.png>

キャッシュから同じデータにアクセスしようとすると、次のようになります。

>>> cache.set('logo',item.get_logo())
>>> logo = cache.get('logo')
>>> logo
<ImageFieldFile: uploads/items/item_images/logo.png>
>>> logo.instance
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'ImageFieldFile' object has no attribute 'instance'

ImageFieldFile私の質問は、元の状態で取得できるように、どのようにキャッシュするのですか?簡単なサムネイルで使用するには、そのオブジェクトをテンプレートに渡す必要があります。

4

1 に答える 1

2

したがって、キャッシュを試みる代わりに、に存在ImageFieldFileするオブジェクト(Media)をキャッシュし、ImageFieldFileすべてが機能するようになりました。

データベース:

>>> logo = item.get_logo()
>>> logo
<Media: uploads/items/item_images/logo.png>
>>> logo.image #this is what I was trying to cache before
<ImageFieldFile: uploads/items/item_images/logo.png>
>>> logo.image.instance
<Media: uploads/items/item_images/logo.png>

キャッシュ:

>>> cache.set('logo',logo)
>>> cachedLogo = cache.get('logo')
>>> logo
<Media: uploads/items/item_images/logo.png>
>>> logo.image
<ImageFieldFile: uploads/items/item_images/logo.png>
>>> logo.image.instance
<Media: uploads/items/item_images/logo.png>
于 2012-11-29T22:36:26.483 に答える