簡體   English   中英

python django - 從 makemigrations 中排除 class

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM