Django:显示DecimalField值

时间:2012-08-15 23:19:10

标签: python django django-models django-templates

我的模型有DecimalField

points_player1 = models.DecimalField(max_digits=3, decimal_places=1, blank=True, null=True)

当我在模板中显示此字段时,它始终显示0.01.0等值。 但我想让这种行为更加用户友好:

  1. 例如,如果用户输入为1,则会显示1(现在为1.0)。
  2. 如果用户输入为1.5,则应显示1.5
  3. 默认值为0,而不是0.0
  4. 最好的方法是什么? DecimalField对我的案例是正确的选择吗?

2 个答案:

答案 0 :(得分:12)

您可以在模板中执行{{decimal_field|floatformat}},该模板将四舍五入并仅在必要时显示“.0”。

更多参考template - floatformat

答案 1 :(得分:-1)

如果由于某种原因你不能/不想使用django模板,你可以修改模型保存方法,将其添加到模型的底部:

var expireSchema = new Schema({
    expireAt: Date,
    user_pk: { type: Schema.Types.ObjectId, ref: 'user_expire' }
});

expireSchema
  .virtual('expiryTime')
  .get(function() {
    //allow for reaper running at 60 second intervals to cause expireAt.fromNow message to be 'in the past'
    var expiryTime = moment(this.expireAt).fromNow();
    if(String(expiryTime).indexOf("ago")){
      expiryTime = "in a few seconds";
    }
    return expiryTime;
  });

var expireModel =  mongoose.model('UserExpire', expireSchema);

expireModel.collection.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } );

没试过,但它应该有用。