无法注册新的Django模型方法?

时间:2016-01-21 15:45:45

标签: django django-models

我在models.py中创建了两个新方法:

def test(self):
     return 'Test'

然而,在重新启动apache和wsgi之后,我无法在模板或命令行中使用这些方法。

相反,我得到'模型没有属性' test'

以前有人见过这个问题吗?你是怎么解决的?

class ClientAppointmentMessage(models.Model):
    # fields here

    class Meta:
        ordering = ['-created']

    def __unicode__(self):
        return self.appointment.creator.name

    def get_absolute_url(self):
        return '/appointment/{0}'.format(self.appointment.id)

    def test(self):
        return 'Test'

注意:

  • 模板完全忽略该功能(无错误,无结果)

  • Shell抛出' ClientAppointmentMessage'没有属性' test'

  • 我已确保将文件上传到正确的目录。

  • 我已经尝试了@ property'方法

  • 之上
  • 我重启了apache和wsgi

shell命令示例:

from path.to.models import ClientAppointment, ClientAppointmentMessage
a = ClientAppointment.objects.get(id=1)
a.test() --> AttributeError: 'ClientAppointment has no attribute 'test''
a = ClientAppointmentMessage.objects.get(id=1)
a.test() --> AttributeError: 'ClientAppointmentMessage' has no attribute 'test'
a = ClientAppointmentMessage()
dir(a) --> shows list of methods, not including 'test' (this occurs both as property and as regular method) 

1 个答案:

答案 0 :(得分:0)

问题是models.py文件中有混合的空格/制表符。然而,奇怪的是,通常会触发缩进错误。不知道为什么这个没有,但对于一些可能有类似无法解释的问题的人来说,值得检查。