Ich habe die folgende Model-Klasse, die meine Vermögenswerte einschließlich der Kosten darstellt.Wie überschreibe ich die __str __() -Methode eines einzelnen Feldes, ohne eine Knoten-ModelField-Klasse zu erstellen?
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
Gibt es eine Möglichkeit, die __str__()
Methode von Asset.cost
außer Kraft zu setzen?
Mein Ziel ist es, die Ausgabe von cost
mit dem Währungssymbol unter Beibehaltung der Eigenschaften einer ganzen Zahl zu haben.
Beispiele:
obj.cost = 10.00
print(obj.cost) # should return $10.00
print(obj.cost + 10) # should still be possible
# and should return 20.00 (without currency symbol,
# because it is a regular integer now)
Beachten Sie, dass 'obj.cost' nur eine [Decimal'] (https://docs.python.org/3/library/decimal.html#decimal.Decimal) Instanz ist. Es ist nicht ratsam, die Methode "__str__" in der eingebauten Klasse "Decimal" zu überschreiben. Sie können eine Dienstprogrammfunktion verwenden, um die Dezimalstelle mit einem Währungssymbol zu drucken. – knbk