我使用django-composite-field创建一个货币字段,其中既包括美元值,也包括美元年(即“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()
当我访问ProductStandard
实例的price
属性时,我希望看到这样的格式化字符串:2012$: $199.99
。相反,我看到DollarField(dollar_value=Decimal('199.99'), dollar_year=2012)
,它是the CompositeField ^{__unicode__
方法,Django不应该重写吗?还是我误解了什么?在
我将Django 1.5.4与python2.7.3和Django复合字段0.1一起使用。在
您看到的
__repr__
实际上不是CompositeField的__repr__
,而是它的代理(参见composite_字段/基准.py,第104行)。因此,您必须提供自己的代理,并在那里重写__repr__
方法,如下所示:当然,如果您想让}。区别在于:
^{pr2}$__repr__
保持原样,您可以像您一样重写__unicode__
,而不是{将调用
__repr__
,而将调用
__unicode__
方法。在相关问题 更多 >
编程相关推荐