我在models.py
中添加了一个新的ImageField:
class User(AbstractUser):
[more_fields_here]
profile_picture = models.ImageField(upload_to='profile_pictures', null=True)
我运行python manage.py makemigrations
然后python manage.py migrate
没有任何错误。
但是当我运行我的应用程序时,我得到了:
ProgrammingError at column authentication_user.profile_picture does not exist
我在Postgres数据库中检查过,profile_picture
列不存在。
我删除了迁移并再次尝试,但我仍然遇到同样的错误。
在migrations/0001_initial.py
中有一行:
('profile_picture', models.ImageField(null=True, upload_to='profile_pictures')),
但为什么表格中不列?
答案 0 :(得分:1)
看起来这是与迁移混淆的事情,不建议手动修改迁移文件。 Django存储已应用迁移的信息,如果您修改已应用的0001
迁移并再次运行migrate
,则不会应用这些修改。当然,我不知道这究竟是怎么回事,但在profile_picture
应用后添加了0001
字段。
解决此问题的最简单方法(无需回滚任何迁移):
profile_picture
迁移0001
makemigrations
(0002
应创建新字段profile_picture
)migrate