Python 参考Django 1.5中方法中的模型方法

Python 参考Django 1.5中方法中的模型方法,python,django,templates,methods,model,Python,Django,Templates,Methods,Model,我有一个模型 class ModelName(models.Model): field = models.CharField(max_length=200) def field1(self): return self.field[10:11] def field2(self): return self.field1 在我的模板中,我在打印{{object.field1}}时得到了所需的结果,但似乎我无法在模型方法中引用另一个模型方法。

我有一个模型

class ModelName(models.Model):
    field = models.CharField(max_length=200)

    def field1(self):
        return self.field[10:11]

    def field2(self):
        return self.field1
在我的模板中,我在打印{{object.field1}}时得到了所需的结果,但似乎我无法在模型方法中引用另一个模型方法。打印{{object.field2}}时,消息绑定方法失败。

在field2方法中,您返回对field1方法的引用,因此模板的行为是这样的

您可能想从field2呼叫field1,然后返回?比如:

def field2(self):
    return self.field1()
在field2方法中,返回对field1方法的引用,所以模板就是这样运行的

您可能想从field2呼叫field1,然后返回?比如:

def field2(self):
    return self.field1()

当您的方法是getter-only时,最好用@property装饰它们。在访问括号时,就不需要括号了。罗汉是对的,你漏掉了括号

class ModelName(models.Model):
    field = models.CharField(max_length=200)

    @property
    def field1(self):
        return self.field[10:11]

    @property
    def field2(self):
        return self.field1

当您的方法是getter-only时,最好用@property装饰它们。在访问括号时,就不需要括号了。罗汉是对的,你漏掉了括号

class ModelName(models.Model):
    field = models.CharField(max_length=200)

    @property
    def field1(self):
        return self.field[10:11]

    @property
    def field2(self):
        return self.field1