我正在做一些外部集成以將數據保存到Django模型。整合需要一些時間。所以我想創建一些臨時重複模型。我將數據創建到這些臨時模型中。完成該過程後,我將數據傳輸到實際模型。通過這樣做,我不會給系統任何停機時間。Django模型附加短語到app_label
class MyModelAbstract(models.Model):
my_field = models.CharField(max_length=50)
...
class Meta:
abstract = True
class MyModel(MyModelAbstract):
is_active = models.BooleanField(default=True)
class MyModelTemp(MyModelAbstract):
pass
如果我的應用程序名稱爲my_app
比表名正在成爲my_app_mymodel
和my_app_mymodeltemp
。我想將其命名爲my_app_tmp_mymodeltemp
。我可以用下面的做到這一點:
class MyModelTemp(MyModelAbstract):
class Meta:
app_label = 'my_app_tmp'
但我不想寫app_label
靜態。如果我更改名稱,我不想手動更改app_label
。我想將其指定爲app_label = '%s_tmp' % app_label
,但我無法訪問內部Meta類中的當前應用程序標籤。
此外,我可以通過爲這種情況創建新的元類來處理這個問題。我正在尋找一種更簡單的方法。
AFAIK,這不能做,因爲你需要有遷移改變實際的表名和遷移不能動態 – e4c5
我不想更改遷移行爲。我希望在註冊模型之前在創建新類時更改app_label。因此它不會影響遷移。 – scriptmonster
需要更好地解釋該評論 – e4c5