Django不会在Postgres上创建ImageField

时间:2017-06-28 16:19:43

标签: django postgresql django-models

我在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')),

但为什么表格中列?

1 个答案:

答案 0 :(得分:1)

看起来这是与迁移混淆的事情,不建议手动修改迁移文件。 Django存储已应用迁移的信息,如果您修改已应用的0001迁移并再次运行migrate,则不会应用这些修改。当然,我不知道这究竟是怎么回事,但在profile_picture应用后添加了0001字段。

解决此问题的最简单方法(无需回滚任何迁移):

  1. profile_picture迁移
  2. 中删除字段0001
  3. 再次运行makemigrations0002应创建新字段profile_picture
  4. 运行migrate