我有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/")
我想按如下方式使用它們:首先生成圖片對象。然後創建大小對象。對於每個大小和圖片,應在需要時生成緩存對象。
我的問題是,我不知道把代碼放在哪裏。它應該是這樣的(僞):
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 2012-04-22 21:12:43
這樣做的目的是讓圖片具有多種尺寸。 Picture模塊將保存原始圖像,而Cache模塊將保存多個調整大小的版本。感謝您的回覆,我會盡力改進我的問題。 – JasonTS 2012-04-22 21:21:14
啊是的。這些信息絕對有用。您的緩存模型實際上更多是版本。我開始認爲你試圖手動進行緩存,正走向錯誤的道路。請更新問題以顯示您的模型以及此用法的示例。 – jdi 2012-04-22 21:23:06