【发布时间】:2014-09-28 00:27:26
【问题描述】:
我有一个旧数据库,我为它创建了一个模型。如下所示。
class Account(models.Model):
balance = models.DecimalField(max_digits=42, decimal_places=1, default=Decimal('0.0'))
当我运行以下查询时,我得到 balance field 作为 None insted 使用字段上的 default 值。
Account.objects.get(pk=1).balance #returns None instead of Decimal(0.0).
当 SQL 数据库上的旧余额为 NULL 时,我想获得 default Decimal(0.0)。
有没有办法告诉 django orm 给我默认的Decimal(0.0) 而不是None。
提前致谢。
编辑:
我知道我们可以添加自定义方法或@property 并使其成为返回余额或默认值的方法,但我还运行一些其他查询,如下所示。
Account.objects.values_list('balance') #returns [(1,),(None,),(None,)]
不使用默认值。
【问题讨论】:
-
将现有的空值转换为
0.00并更改架构以防止空值可能更容易。 -
@Alasdair:我希望但显然这不在我的控制之下。 :(
-
你可以尝试写一个custom model field。
-
@Alasdair:我会试一试。谢谢,不知道自定义模型字段。惊人的! ;)
标签: python sql django django-models django-queryset