1

新しいインスタンスを作成するときにフィールドに使用するデフォルト値を返す呼び出し可能なオブジェクトを作成しようとしています。

値のロジックは、モデル内の他のデータに依存しています。別のクラスを作成しようとしましたが、要素の正しい組み合わせにヒットしませんでした。例:

models.pyで:

Class Box(models.Model):
    inv_id = models.CharField(max_length=16,default=gen_inv_id())

呼び出し可能オブジェクトは、データベースモデルをクエリし、テーブル値をインクリメントする必要があります。アプリの下の別の.pyモジュールにクラスを作成しようとしましたが、値を返すメソッドが必要です。現時点では、OOは私の強いスーツではありません。モデルが無効になり、方法がそれに依存していると思うので、鶏卵/卵のシナリオが出現したようです。

助けてくれてありがとう。

4

2 に答える 2

5

ずっと (1.0 日より前) 以来、デフォルトのキーワードは callable をサポートしていました。コードの問題は、callable ( ) を渡すのではなく、callable ( default=gen_inv_id) の結果を渡すことですdefault=gen_inv_id()

したがって、おそらくやりたいことは次のとおりです。

Class Box(models.Model):
    inv_id = models.CharField(max_length=16,default=gen_inv_id)

これについて説明している最新バージョンのドキュメントを確認してください: https://docs.djangoproject.com/en/1.4/ref/models/fields/#default

于 2012-04-16T22:28:14.783 に答える
0

私は前にこれに遭遇しました。できることの 1 つは、クラスの save メソッドを上書きすることです。これにより、最初に計算を実行するために必要なパラメーターを保存し、次に計算を実行して再保存します。save メソッドを上書きする場合は、super.save() を呼び出す必要があります (正確な表記法を忘れてしまいました)。

編集: super.save の表記は super(Model, self).save(*args, **kwargs) です

于 2012-04-16T22:13:09.587 に答える