1

私は次の線に沿ったモデル構造を持っています:

class Store(models.Model):
    STORE_TYPE = (
        ('I', 'Ice Cream'),
        ('H', 'Hardware'),
    ) 
    retailer_type = models.CharField(max_length=10, choices=STORE_TYPE)
    ...

class HardwareStore(Store):
        hammers_stocked = models.BooleanField()

HardwareStore()オブジェクトを作成するときに、retailer_typeをデフォルトでHに設定したいと思います。HardwareStoreクラス内のこのフィールドにデフォルト値を設定することは可能ですか?

4

3 に答える 3

1

これがあなたの答えです。オーバーライドしようとしているフィールドが「フィールド」タイプの場合、djangoはデフォルトでそれを許可していません。Retailer_typeが基本タイプ(文字列など)の場合、Pythonで許可されているため、簡単に実行できると思います。一方、Djangoは、独自のデータ型ではそうではありません。

于 2012-05-23T09:26:58.107 に答える
0

エレガントな解決策は、post_initシグナルにコードを記述するか、init メソッドを上書きしてデフォルト値を設定することだと思います。手順は、それが新しいモデルであるか既存のモデルであるかを確認し (インスタンス pk を確認する)、適切な場合にプロパティをデフォルト値に設定することです。

詳細が必要な場合はお知らせください。

于 2012-05-23T10:00:41.250 に答える