У меня есть некоторые модели, которые включают названия, начинающиеся с «.». Я написал небольшую вспомогательную функцию помощника регулярного выражения, чтобы переместить «до» (например, «Dogg Pound» -> «Dogg Pound, The»). Проблема в том, что я продолжаю получать NameError: name 'self' is not defined
, когда пытаюсь проверить мои модели. Я не совсем уверен, почему это должно быть, поскольку я не думаю, что я делаю что-то другое, чем примеры методов модели на веб-сайте. Мой код:«self» в Django Методы модели
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"]
Любые предложения?