SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CruzerLite

    CruzerLite

    1 EKİM 2011
  • GoProTutorials

    GoProTutoria

    18 NİSAN 2011
  • Hallucination Land

    Hallucinatio

    14 Ocak 2011