【问题标题】:"self" in Django Model methodsDjango 模型方法中的“自我”
【发布时间】:2013-04-10 18:43:51
【问题描述】:

我有一些模型包含以“the”开头的标题。我编写了一个小正则表达式辅助函数来将“the”移动到末尾(例如,“The Dogg Pound”->“Dogg Pound, The”)。问题是,当我尝试验证我的模型时,我不断收到NameError: name 'self' is not defined。我不完全确定为什么会这样,因为我认为我所做的与网站上的模型方法示例没有什么不同。我的代码:

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"]

有什么建议吗?

【问题讨论】:

    标签: django django-models python-2.7


    【解决方案1】:

    在你的模型class Album:

    sort_name = models.CharField(max_length=255, null=True, blank=True, default=self.s_n)
    

    self.s_n 应该只是 s_n

    sort_name = models.CharField(max_length=255, null=True, blank=True, default=s_n)
    

    【讨论】:

      猜你喜欢
      • 2013-04-18
      • 2012-05-08
      • 2019-10-18
      • 2011-08-20
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      相关资源
      最近更新 更多