J'ai quelques modèles qui incluent des titres commençant par "le." J'ai écrit une petite fonction d'aide auxiliaire regex pour déplacer le "the" jusqu'à la fin (par exemple, "The Dogg Pound" -> "Dogg Pound, The"). Le problème est, je continue à obtenir NameError: name 'self' is not defined
quand j'essaye de valider mes modèles. Je ne suis pas tout à fait sûr pourquoi cela devrait être, car je ne pense pas que je fais quelque chose de différent que les exemples de méthodes du modèle sur le site. Mon code:"self" dans Django Méthodes du modèle
from django.db import models
import re
def de_the(s):
m = re.match(r'(th[ea]) (.*)', s, re.I | re.U)
if m:
return '{}, {}'.format(m.group(2), m.group(1))
else:
return s
...
class Album(models.Model):
album = models.CharField(max_length=255, null=True, blank=True)
artist = models.ForeignKey('Artist', null=True, blank=True)
year = models.IntegerField(unique=False, null=True, blank=True)
def _get_sort_name(self):
return de_the(self.__unicode__())
def __unicode__(self):
try:
return self.album
except AttributeError, TypeError:
return None
s_n = property(_get_sort_name)
sort_name = models.CharField(max_length=255, null=True, blank=True, default=self.s_n)
class Meta:
ordering = ["sort_name"]
Une suggestion?