1
django(v1.9)では、ベースクラス で定義されているフィールドを、異なる子孫クラスで異なるデフォルト値を使用するように設定する方法はありますか?Djangoでは、異なるデフォルトを使うようにModelクラスの子孫を設定できますか?
class Base(models.Model):
OBJ_TYPES = (
('type_a', 'Type A'),
('type_b', 'Type B'),
('type_c', 'Type C'),
('type_d', 'Type D'),
)
obj_type = models.CharField(choices=OBJ_TYPES, default='type_a')
class GenericChild(Base):
# obj_type defaults to type_a
pass
class TypeDChild(Base)
# Want obj_type to default to type_d
# This causes error (local field clashes...)
obj_type = models.CharField(choices=OBJ_TYPES, default='type_d')
デフォルトは呼び出し可能ですが、関連するモデルサブタイプをチェックして適切な値を返す関数を呼び出すことができます。 –
@simonecittadiniデフォルトでは呼び出し可能ですが、あなたは 'self'へのアクセス権がないので、呼び出し可能な内部のサブタイプをチェックすることはできません。 – Alasdair
それはできないようです。この質問を参照してくださいhttp://stackoverflow.com/questions/2344751/in-django-model-inheritance-does-it-allow-you-to-override-a-parent-models-a – JustLive