私は完全に完全にプログラミングに新しいので、おそらく愚かな質問ではありませんが、私は過去2〜3日間この頭を打ちました。動的な属性を持つDjangoモデル
写真とサムネイルの2つのモデルがあります。私は各写真のサムネイルリンクを取得するための簡単でダイナミックな方法を考え出しています。私はこれを行う関数(get_thumbs)を思いついたが、モデルが呼び出されたときに自動的に実行したい(基本的に、モデルが利用可能になるとすぐにPhoto.get_%s_url%thumb.nameを取得する) 。
以下は私のmodels.pyです。適切な方向への助けや振る舞い(たとえそれがちょうど「google blah」であっても)は非常に高く評価されます。ありがとう。
class Photo(models.Model):
name = models.CharField(max_length=100)
original_image = models.ImageField(upload_to='photos')
caption = models.TextField(null=True, blank=True)
title_slug = models.SlugField(null=True, blank=True, unique=True)
rootfilename = models.CharField(max_length=50, editable=False, blank=True)
num_views = models.PositiveIntegerField(editable=False, default=0)
def __unicode__(self):
return self.name
thumbnails = Thumbnail.objects.all()
def create_thumbs(self):
for thumbnail in self.thumbnails:
fname = (settings.MEDIA_ROOT + self.rootfilename + '_' + thumbnail.name + '.jpg')
if exists(fname):
None
else:
t_img = Image.open(self.original_image.path)
t_fit = ImageOps.fit(t_img, (thumbnail.height,thumbnail.width), Image.ANTIALIAS, 0, (0.5,0.5))
t_fit.save(fname,"JPEG")
def save(self, *args, **kwargs):
self.rootfilename = (self.original_image.name).strip('photos/.jpg')
super(Photo, self).save(*args, **kwargs)
self.create_thumbs()
def get_thumbs(self):
for thumb in self.thumbnails:
setattr(self, ('get_'+thumb.name+'_url'), ('thumbs/'+self.rootfilename+'_'+thumb.name+'.jpg'))
**さまざまなソリューションの長所と短所を考慮したこの回答をご覧ください。** http://stackoverflow.com/a/7934577/497056 –