更改为makemigrations未检测到的Django模型

时间:2016-09-23 19:37:36

标签: django migration

我有一个Django模型,在另一个模型中被引用为ForeignKey类型。为了在管理界面中很好地显示它,我添加了__unicode__方法,如下所示:

class Foo(models.Model):
    label = models.CharField(max_length=2)
    description = models.TextField()

    def __unicode__(self):
        return self.label

保存models.py文件后,管理界面中会立即显示此更改。但是当我运行makemigrations时,它会返回No changes detected in app 'foo'。正在运行migrate没有任何效果,因为它没有看到任何更改,python manage.py check会返回System check identified no issues (0 silenced).

我应该期待吗?我对我的模型进行了很多更改,因此进行了很多迁移(包括本周),但我以前从未遇到过这种情况。

目前在Windows上的Python 2.7下运行带有Sqlite开发数据库的Django 1.8.3。

1 个答案:

答案 0 :(得分:1)

那应该没问题。只有在模型的结构发生更改时,才会创建迁移,例如,如果您向模型添加任何新变量。

作为新方法,由于它们不会改变模型的结构,因此不需要迁移。因此,您可以愉快地为模型添加方法,而无需运行单个迁移。

如果该名称未显示在django的管理员后端中,请尝试使用方法__str__。这对我有用(但在Linux上运行Python 3.5)。

def __str__ ( self ):
    return self.name