我有以下Model类来表示我的资产,包括成本。
class Asset(models.Model):
name = models.CharField(max_length=64)
cost = models.DecimalField(max_digits=12, decimal_places=2, default=0.00)
def __str__(self):
return self.name
有没有办法覆盖__str__()
的{{1}}方法?
我的目标是让Asset.cost
的输出包括货币符号,同时保留整数的属性。
示例:
cost
答案 0 :(得分:1)
显然不可能。 __str__
是属于类Asset
的方法,但是如果您要打印object.cost
,则尝试显示字段 {{的字符串表示形式1}}。 cost
只会影响模型__str__
的对象的输出,但不会影响单个字段的输出。
其次,Asset
没有将object.cost + 10
添加到10
,您只是打印了两个整数加法的结果,但是您没有将结果保存到变量也未分配给object.cost
,因此object.cost
无法执行任何操作。
你需要一个util函数才能做到这一点,我认为这是一件微不足道的事情。该功能应该在班级__str__
中,除非您有其他情况可以打印货币。在哪些情况下,util应该是一个独立的函数。
答案 1 :(得分:1)
您可以定义一个方法display_cost
,然后在需要前面的美元符号时调用该方法。
def display_cost(self):
return "${amount}".format(amount=self.cost)
obj.cost = 10.00
obj.save()
obj.display_cost() # >> "$10.00"
这样,您仍然可以通过不更改Asset.cost字段来保留整数的属性,而是使用函数在需要时将其包装。