私はdjango-composite-fieldを使用して、dollar_valueとdollar_yearの両方を含む通貨フィールドを作成しています(つまり、「2008ドルで200ドル」)。
Django アプリに次のモデルがあります。
#models.py
from composite_field import CompositeField
class DollarField(CompositeField):
""" Composite field to associate dollar values with dollar-years."""
dollar_value = models.DecimalField(max_digits=8, decimal_places=2)
dollar_year = models.PositiveSmallIntegerField(
blank=False,
null=False,
validators=[
MinValueValidator(1980),
MaxValueValidator(2020)])
def __unicode__(self):
return self.dollar_year+"$: $"+self.dollar_value # "2012$: $149.95"
class ProductStandard(models.Model):
product = models.ForeignKey(Product)
standard_level = models.ForeignKey(StandardLevel)
price = DollarField()
price
インスタンスの属性にアクセスするとProductStandard
、次のような書式設定された文字列が表示されることを期待しています2012$: $199.99
。代わりに、 CompositeFieldメソッドDollarField(dollar_value=Decimal('199.99'), dollar_year=2012)
の戻り値である が表示されます。しかし、CompositeField をサブクラス化し、独自のメソッドを追加したので、Django は上書きしないのでしょうか? それとも私は何かを誤解していますか?__repr__
__unicode__
Python 2.7.3 および django-composite-field 0.1 で Django 1.5.4 を使用しています。