我有一个这样的模型:
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中表达上面的行为?
答案 0 :(得分:2)
如果模型方法没有参数(超出self
),那么在模板中使用这种语法就可以正常工作(注意没有括号)
{{ car.GetEngine }}
使用property / setter / getter掩盖模型字段的更普遍的问题更加困难,并且容易出现警告,参考https://code.djangoproject.com/ticket/3148
如果发生这种情况,除非它是一个大问题,你可能只想使用不同的属性名称或模板标签等