2015-09-11 57 views
0

我有一個抽象BaseModel從衆多車型將繼承行爲,從構造函數初始化屬性值:設置在構造屬性的Django模型

class BaseModel(models.Model): 
    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 
     for key in kwargs: 
      setattr(self, key, kwargs[key]) 

    class Meta: 
     abstract = True 

然後,我嘗試初始化它的特像這樣的一個:

BaseModelSon(attr1=val1, attr2=val2, ...) 

這是一個很好的做法嗎?你知道任何其他方式來實現Django模型的動態初始化嗎?

回答

2

您已經可以創建普通的Django模型實例與

MyModel(field1='value1', field2='value2') 

,所以我不認爲你__init__方法是必要的。

+0

我假設django沒有這個覆蓋 – gerosalesc

1

而且你可能會發現有用Model.objects.create()法新Django模型實例創建:

instance = MyModel.objects.create(field1='value1', field2='value2'...) 

如果有一些自動生成的字段(例如ID或者一些最新與auto_now_add=True選項) - 你」如果你已經使用Model.objects.create(),你會得到他們的值instance