私は3つのモデルを持っています。Djangoで複数のモジュールを接続するには?
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オブジェクトを作成します。サイズとピクチャごとに、必要に応じてCacheオブジェクトを生成する必要があります。
私の問題は、コードをどこに置くべきかわかりません。
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 ..]
このコードはどこで接続できますか?ビュー内でこれを行うことはできますが、モデルに埋め込む方法はありますか?キャッシュは管理者ではなく、キャッシュとピクチャの特定の組み合わせが必要なときに生成されるべきです。
これはおそらく簡単ですが、Googleには適切なキーワードが欠けています。
カップルの質問...なぜあなたはときあなたの写真とサイズを関連付けるために別のモデルが必要なのかpicture.imagefieldはモデルの幅と高さを保存しますか?キャッシュモデルの目的は何ですか?それはちょうどイメージデータを複製するようですか?モデルスニペットを投稿し、見つけようとしている正確なコードとは対照的に、あなたが達成しようとしていることをもう少し詳しく説明できますか? – jdi
これは、画像のサイズを複数にすることを目的としています。ピクチャモジュールは元のイメージを保持し、キャッシュモジュールは複数のサイズ変更されたバージョンを保持します。あなたの返事をありがとう、私は私の質問を改善しようとします。 – JasonTS
ああ、そうです。その情報は間違いなく役立ちます。あなたのキャッシュモデルは本当にバージョンの多くです。私はあなたが手動でキャッシングを試みることによって間違った方向に向かっていると思っていました。モデルを表示するために質問を更新してください。また、この使用法の例も示してください。 – jdi