Код ниже должен заменить все \[\[(.+)\]\]
совпадения в поле «содержимое» AD на src ADResource, где (.+)
- псевдоним
[[Similac]]
& rarr; media/banners/2011/07/24/ad1.gif
[[res]]
& rarr; media/banners/2011/07/24/ad2.png
Он перехватывает исключение DoesNotExist для [[res]] или [[Similac]] и возвращает строки res или Similac.
ADResource table contents:
id alias src
----------------------------------------------------
1 Similac media/banners/2011/07/24/ad1.gif
2 res media/banners/2011/07/24/ad2.png
class ADResource(models.Model):
alias = models.CharField(max_length=256)
src = models.FileField(upload_to="media/banners/%Y/%m/%d/")
class AD(models.Model):
content = models.CharField(max_length=10000)
def getResourceURL(object, object_alias):
try:
return ADResource.objects.all().get(alias="%s" % object_alias).src.url
except ADResource.DoesNotExist:
return object_alias
def save(self, **kwargs):
self.content = re.sub(r'\[\[(.+)\]\]', AD.getResourceURL(self, r'\1'), self.content)
super(AD, self).save(**kwargs)
Но этот код работает, и я получаю URL поля src:
return ADResource.objects.all().get(alias='res').src.url