30 AĞUSTOS 2009, Pazar
Kaydederken, nasıl eğer bir alan değişip değişmediğini kontrol EDEBİLİR MİSİN?Django:
Benim modelde var :
class Alias(MyBaseModel):
remote_image = models.URLField(max_length=500, null=True, help_text="A URL that is downloaded and cached for the image. Only
used when the alias is made")
image = models.ImageField(upload_to='alias', default='alias-default.png', help_text="An image representing the alias")
def save(self, *args, **kw):
if (not self.image or self.image.name == 'alias-default.png') and self.remote_image :
try :
data = utils.fetch(self.remote_image)
image = StringIO.StringIO(data)
image = Image.open(image)
buf = StringIO.StringIO()
image.save(buf, format='PNG')
self.image.save(hashlib.md5(self.string_id).hexdigest() ".png", ContentFile(buf.getvalue()))
except IOError :
pass
Harika ilk defa remote_image
değişiklikleri çalışır.
Nasıl birinin diğer üzerinde remote_image
değiştirdi yeni bir resim alabilir miyim? Ve ikinci olarak, orada önbelleği için daha iyi bir yol, uzak bir görüntü.
CEVAP
24 Kasım 2009, Salı
Biraz geç oldu ama, bana bu yazı karşısında diğerleri için bu çözüm atalım. Aslında, orijinal değerinin bir kopyasını tutmak, böylece models.Model
__init__
yöntemi geçersiz kılmak isteyebilirsiniz. Bu başka bir DB arama her zaman iyi bir şey) yapmak zorunda kalmamanız yapar.
class Person(models.Model):
name = models.CharField()
__original_name = None
def __init__(self, *args, **kwargs):
super(Person, self).__init__(*args, **kwargs)
self.__original_name = self.name
def save(self, force_insert=False, force_update=False, *args, **kwargs):
if self.name != self.__original_name:
# name changed - do something here
super(Person, self).save(force_insert, force_update, *args, **kwargs)
self.__original_name = self.name
Bunu Paylaş:
Nasıl bir URL JavaScript kullanarak #s...
Bash, nasıl eğer bir string değer ile ...
Eğer kullanıcı giriş olup olmadığını k...
Nasıl eğer bir arka plan görüntüsü yük...
'inme-genişliği s SVG çizilir nas...