2

私はDjangoプロジェクトに関連するデータベースを正規化しており、フィールドを別のテーブルに移動します。実際に列を削除する前に、新しいテーブルを追加した後に古い属性を使用しようとすると、実装プロセスの一環として、私は同僚に非推奨警告を送信したいと思います。djangoモデルのフィールドの非推奨

class Asset(Model): 
    model = models.CharField(max_length=64, blank=True, null=True) 
    part_number = models.CharField(max_length=32, blank=True, null=True) # this will be a redundant column to be deprecated 
    company = models.ForeignKey('Company', models.CASCADE, blank=True, null=True) # this will be a redundant column to be deprecated 
    # other database fields as attributes and class methods 

私の理解では、私はどこかのクラスのwarnings.warn('<field name> is deprecated', DeprecationWarning)の線に沿って何かを追加する必要がありますが、私はそれをどこに追加するということですか?

+0

フィールドをプロパティに変更して警告を処理し、可能であれば適切な値を返すことができます。 –

答えて

0

私はこれに似たことをします。フィールドをプロパティに変えて、警告を処理します。これは、フィールド上でそのフィルタを作成したクエリを破ってしまうことに注意してください。インスタンスから属性にアクセスするのに役立ちます。

class NewAsset(Model): 
    model = models.CharField(max_length=64, blank=True, null=True) 

class Asset(Model): 
    @property 
    def model(self): 
     log.warning('Stop using this') 
     return NewAsset.model 
+0

残念ながら、私は既存の機能をただちに破壊する危険はありません – ccs

関連する問題