0

関数からデフォルト値を返すようにモデル フィールドを作成するにはどうすればよいですか?

class Q(models.Model):
    _random_id = models.CharField(max_length=18)

    @property
    def random_id(self):
        return self._random_id

    @random_id.setter
    def random_id(self):
        self._random_id = f()
4

1 に答える 1

1

ドキュメントからdefault

これは、値または呼び出し可能なオブジェクトにすることができます。callable の場合、新しいオブジェクトが作成されるたびに呼び出されます。

したがって、関数を渡すことができます:

_random_id = models.CharField(max_length=18, default=f)

Qは組み込みの django の名前なので、モデルには使用しないことをお勧めします。

さらに遠く、

@property
def random_id(self):
    return self._random_id

_random_idモデルのインスタンスからフィールドを直接参照できるため、これは構文上のシュガーとしてのみ機能します。

foo = Q()
foo._random_id

したがって、このプロパティを完全に削除することを検討する必要があります。必要random_idに応じて、フィールドの名前として設定します。

于 2013-07-14T06:53:26.627 に答える