0

私のオブジェクトには、DecimalFieldデフォルトが に設定されているとします20。Python でオブジェクトを作成し、その値を指定しないとDecimalFieldNone.

値を指定しないたびにデフォルト値が適用されるようにするにはどうすればよいですか?

class SomeModel(models.Model):
    """Demonstrate the flaw of the default value."""

    dec_field = models.DecimalField(default=1, blank=True, null=True)


my_model = SomeModel()
my_model.save()  # this is where I expect the dec_field to become Decimal('1.0')
                 # instead it's None
4

2 に答える 2

3

South などの移行ツールを使用するか、テーブルを削除して再同期することにより、モデルとデータベースが同期されていることを確認します。

于 2012-09-06T21:53:30.150 に答える
1

デフォルトは、あなたが説明したもので設定する必要があります。あなたの例に関する詳細情報が必要です。ただし、デフォルトを手動でオーバーライドまたは設定する場合は、次のようにします。

DEC_FIELD_DEFAULT = 20
class Example(models.Model):
    dec_field = models.DecimalField(default=DEC_FIELD_DEFAULT)

    def __init__(self, *args, **kwargs):
        super(Example, self).__init__(self, *args, **kwargs)
        self.dec_field = DEC_FIELD_DEFAULT
于 2012-09-06T21:51:45.447 に答える