[英]python django - exclude class from makemigrations
假設我有一個 class:
class A(models.Model, GrandparentClassSharedByAllClasses):
value = models.CharField(max_length=2000, blank=False, null=False)
def __str__(self):
return self.value
class Meta:
verbose_name = _('test')
verbose_name_plural = _('tests')
我可以以某種方式將其排除在 makemigration/migrations 之外嗎?
我為什么要那個? -> Class A 是許多類之一,所有其他類都將對象保存在數據庫中。 Class A 應該帶來與其他類相同的功能,因此可以在同一管道中使用,但不能存儲在數據庫中。
如果您希望它是 AbstractModel ,則將其中的字段添加到子模型的遷移中,例如:
class A(models.Model):
value = models.CharField(max_length=2000, blank=False, null=False)
def __str__(self):
return self.value
class Meta:
verbose_name = _('test')
verbose_name_plural = _('tests')
abstract = True
class B(A):
name = models.CharField(max_lenght=123)
然后您的 B model 將存儲在 db 中,其中包含以下字段:
id
value
name
Django 文檔中有示例。 Class A 不會被遷移到數據庫。 但是,如果您有舊數據庫(數據庫中存在表並且您不想更改它們),您可以使用 meta menaged=False
手動創建模型,就像@Ezon Zaho 寫的那樣,或者您可以運行:
python manage.py inspectdb
這將返回數據庫中現有表的 model 列表。 您需要記住將此數據庫添加到您的 settings.py 中,如此處所述django 文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.