Tôi nghĩ rằng bạn muốn thêm một phương pháp để mô hình của bạn để https://docs.djangoproject.com/en/dev/topics/db/models/#model-methods điều này có thể giúp bạn.
@staticmethod
là trang trí khai báo phương thức cho số class
, vì vậy sự khác biệt là gì?
Câu chuyện dài ngắn, phương pháp tĩnh không có trường hợp đối tượng cụ thể nào chỉ là một đối tượng cho đối tượng class
, ý của đối tượng class
, hầu hết mọi thứ trong python như hàm, lớp và tất nhiên đối tượng đang thực sự đối tượng ...
Giống như tất cả mọi người đã đề cập trước đây @property
là một trang trí cho phép một hành động phương pháp như biến ... vì vậy bạn không cần phải sử dụng một cách rõ ràng ()
eitherway, bạn sẽ muốn làm điều này:
class MyModel(models.Model)
fee = models.DecimalField()
fee_gst = models.DecimalField()
@property
def fee_total(self):
return self.fee + self.fee_gst
mặc dù các tài liệu có một cách tiếp cận dài hơn:
class MyModel(models.Model)
fee = models.DecimalField()
fee_gst = models.DecimalField()
def _fee_total(self):
return self.fee + self.fee_gst
fee_total = property(_fee_total)
cả hai phương pháp được khá nhiều tương đương mặc dù chúng tôi sử dụng trang trí như một ngắn tay.
hy vọng điều này sẽ hữu ích.
Nguồn
2012-07-12 06:36:47
Bạn đã thử _total = model.fee_total() _ note missing '()' trong mã của bạn chưa. – Rohan