使用模板中的Django模型方法

时间:2015-07-11 16:16:08

标签: python django

我有一个这样的模型:

class Car(models.Model):
    parentType = models.ForeignKey("self", null=True,blank=True)
    engine = models.TextField (null=True)

汽车可以装有发动机,也可以是同一发动机的另一辆汽车的变体。现在我有一个这样的访问者:

def GetEngine(self):
    if self.parentType:
        return self.parentType.GetEngine()
    return self.engine

但是这很快就会变得模糊,因为我需要一个属性来访问(不能调用该函数)然后我最终得到的命名属性与字段几乎相同。有没有办法直接在Django中表达上面的行为?

1 个答案:

答案 0 :(得分:2)

如果模型方法没有参数(超出self),那么在模板中使用这种语法就可以正常工作(注意没有括号)

{{ car.GetEngine }}

使用property / setter / getter掩盖模型字段的更普遍的问题更加困难,并且容易出现警告,参考https://code.djangoproject.com/ticket/3148

如果发生这种情况,除非它是一个大问题,你可能只想使用不同的属性名称或模板标签等