私は3つのモデルを持っています。
class Picture(models.Model)
name = models.CharField(max_length=255)
image_field = models.ImageField(upload_to="foo/")
slug = models.SlugField()
[...]
class Size(models.Model):
name = models.CharField(max_length=255)
width = models.IntegerField()
height = models.IntegerField()
crop = models.BooleanField(default=True)
upscale = models.BooleanField(default=False)
def __unicode__(self):
return self.name
class Cache(models.Model):
size = models.ForeignKey('Size')
picture = models.ForeignKey('Picture')
image_field = models.ImageField(upload_to="picture/resize/")
それらを次のように使用したいと思います。最初にPictureオブジェクトを生成します。次に、Sizeオブジェクトを作成します。サイズと画像ごとに、必要に応じてキャッシュオブジェクトを生成する必要があります。
私の問題は、コードをどこに置くかわからないことです。(擬似コード)のようになります。
def get_cached_picture(Picture,Size):
try:
cacheObj = Cache.objects.get(picture=Picture, size=Size):
[.. use cacheObj ..]
except Cache.DoesNotExist:
[.. resize Picture according to Size, insert into cache, use it ..]
では、このコードをどこにプラグインできますか?ビュー内でこれを実行できることは知っていますが、モデルに埋め込む方法はありますか?キャッシュは管理者に入力しないでください。代わりに、キャッシュと画像の特定の組み合わせが必要な場合はいつでもキャッシュを生成する必要があります。
おそらく簡単ですが、グーグルの正しいキーワードが不足しています。