我有一个很快的问题。我试着给一个模型添加一个字段,它是两个字段之和。在
例如:
class MyModel(models.Model)
fee = models.DecimalField()
fee_gst = models.DecimalField()
我想我可以在模型中添加一个@staticmethod:
^{pr2}$但我似乎无法使用以下工具访问模型的“费用总额”字段:
model = MyModel.objects.get(pk=1)
total = model.fee_total
你知道我做错了什么吗?在
干杯
从您与模型实例交互的方式来看,我相信您实际上希望使用@property装饰器。在
您需要调用它,并将实例作为参数传递,如下所示。在
静态方法不将隐式
self
作为实例参数传递。在但是,正如“Filip Dupanović”所建议的那样,您可能希望使用@property而不是@staticmethod
我想您应该向模型中添加一个方法,这样https://docs.djangoproject.com/en/dev/topics/db/models/#model-methods可能会对您有所帮助。在
@staticmethod
是一个向class
声明方法的修饰符,那么有什么区别?在长话短说,静态方法没有任何特定对象的实例,只是
class
对象的一个实例,我所说的class
对象是什么意思,在python中大多数类似函数、类的东西,当然对象的实例实际上是对象。。。在就像前面提到的
@property
是一个装饰器,它让方法充当变量。。。所以您不必显式地使用()
不管怎样,你应该这样做:
尽管文件采用了更长的方法:
^{pr2}$尽管我们使用decorator作为简写,但这两种方法几乎是等价的。在
希望这有帮助。在
相关问题 更多 >
编程相关推荐