在Django中首次迁移后如何对数据库(sqlite)进行更改?

时间:2019-06-21 07:10:59

标签: django django-models

我是Django开发的新手,目前正在学习制作博客应用程序的教程。在本教程中,有一个步骤创建一个函数,以允许新用户使用deafult.jpg作为其化身。

但是,我在那里有一个错字。我没有键入'default.jpg',而是键入了'default.jpb'

然后我迁移到数据库中。因此,当我运行服务器并对其进行尝试时,尚未设置其头像的新用户正在使用"default.jpb"而不是"default.jpg"

现在,如何更改数据库以使用正确的定义?

发现问题后,我纠正了我的模型中的错字,然后使用以下命令:

python3 manage.py makemigrations (no changes detected)
python3 manage.py migrate (no migrations to apply)

然后,我决定删除项目中的迁移,然后再次进行迁移,我意识到我无法对数据库中已有的内容进行更改。

    from django.db import models
    from django.contrib.auth.models import User

    # Create your models here.

    class Profile(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE)
        image = models.ImageField(default='default.jpg',     upload_to='profile_pics')

        def __str__(self):
            return f'{self.user.username} Profile'  

我希望尚未设置头像的新用户正在使用位于项目中的default.jpg。

2 个答案:

答案 0 :(得分:1)

问题是您删除了迁移文件。这意味着当您再次运行makemigrations时,它将被命名为001...。但是数据库仍将具有在django_migrations中迁移该文件的记录。

取消删除已删除的迁移并运行makemigrations,然后迁移或编辑数据库并删除从django_migrations删除的迁移

答案 1 :(得分:0)

运行python3 manage.py makemigrations配置文件,然后运行python3 manage.py migration,这将解决问题