【问题标题】:Django migration not picking up all the model fieldsDjango 迁移未获取所有模型字段
【发布时间】:2021-08-31 18:36:18
【问题描述】:

我在 Windows 10 上使用最新的 python 和 Django 创建了一个新的 Django 项目。在一个模型上创建具有多个表/模型的模型后,它跳过了一些字段。重试后不会创建新的迁移脚本。我查看了最初的 0001_initial.py 并且该文件中缺少这些字段。我后来添加了一个新字段,该字段迁移了属性,但没有丢失字段。所有其他模型都在初始迁移中成功更新。这恰好是一个 SQLite DB。

缺少字段的模型:

class articles(models.Model):
    """  articles"""
    title = models.CharField (max_length=500)
    teaser = models.CharField (max_length=500)
    summary = models.CharField (max_length=1500)
    byline = models.CharField (max_length=250)
    category = models.SmallIntegerField
    articlenote = models.CharField (max_length=1000)
    author = models.CharField
    publishedDate = models.DateTimeField
    articleStatus = models.CharField(max_length=4)
    articleText = models.TextField
    last_update= models.DateTimeField

    def __str__(self):
        return self.name

缺少的字段是:category、author、publishedDate、articleText

有趣的是,尝试重新运行迁移后,我在创建的新表上遇到了 Missing Defaults 错误。

由于这是一个全新的项目,我可以删除数据库和迁移脚本,然后重试。我想知道是什么可能导致这种丢失的迁移。

【问题讨论】:

    标签: django model migration


    【解决方案1】:

    您缺少字段的初始化。

    因此,不要使用author = models.CharField,而是使用author = models.CharField(max_length=256),对于所有其他人,使用括号。

    【讨论】:

    • 我没有意识到所有字段都需要 ()。我没有将它们放在我认为不需要它们的整数或文本字段上。
    • 没有括号,您将这些变量定义为一个类,但您需要将它们定义为该类的对象。
    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2014-12-15
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    相关资源
    最近更新 更多