首页 > 解决方案 > 在 Django 中首次迁移后如何更改数据库(sqlite)?

问题描述

我是 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)

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

    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。

标签: djangodjango-models

解决方案


问题是您删除了迁移文件。这意味着当您makemigrations再次运行时,它会将其命名为001.... 但是数据库仍然会有将该文件迁移到django_migrations.

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


推荐阅读