10

モデルのサブクラス用にいくつかのインスタンス変数を作成したいのですが、オブジェクトをデータベースに保存するときに、その変数用のテーブル列は必要ありません。他のクラスで通常のインスタンス変数を作成する方法のように、init ()をオーバーライドすることでこれを行う場所をいくつか読みました。これは、モデルのサブクラスに受け入れられる方法ですか? 他のアプローチはありますか?

models.py:

class MyModel (models.Model):
    name = models.CharField(max_length=300)

    def __init__(self, *args, **kwargs):
        super(MyModel, self).__init__(*args, **kwargs)
        self.tempvar = ''

ビュー.py:

myModel = MyModel()
myModel.tempvar = 'this will not be saved in the database'
4

2 に答える 2

5

存在しないときにアクセスしようとする可能性がない限り、初期化する必要はありませんが、これは許容できる方法です。また、代わりにプロパティを使用する必要があるかどうかを検討してください。

于 2012-05-31T23:47:57.653 に答える
0

Python 3 の更新:super()クラス名を繰り返さずに直接呼び出すことができます

class MyModel (models.Model):
    name = models.CharField(max_length=300)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.tempvar = ''
于 2022-02-27T05:22:25.467 に答える