意外删除后恢复Django模型字段

时间:2017-05-03 22:31:05

标签: django migration

我的django应用程序中有一个列出事件的现有事件模型。事件有一个海报字段,使用models.ImageField存储相关的海报。事件的上传仅由管理员控制,因此无需公开上传。该数据库有大约50个事件条目,事情正常。 由于图像越来越重,我尝试将sorl.thumnail添加到django。在我的models.py文件中,我从sorl.thumbnails导入了ImageField并将其添加到了poster字段中。

当我运行makemigrations时,它报告'alter field poster'然后我运行迁移并在重新加载时,我没有在管理员中看到Poster字段。 即使现有的事件也丢失了海报字段,图像也无法在模板中显示。

我已恢复更改并再次运行迁移,但海报字段仍然不可见。有没有办法恢复模型,并将其与现有的海报图像重新连接? 我正在使用python 3.5和django 1.11其他一切正常,这似乎是一个愚蠢的错误,为了获得更多的速度。

对任何建议都会感激不尽。

以下是我的活动模型{@ 1}}

的内容

Admin.py只是一个注册函数

class Events(models.Model):
    title = models.CharField(max_length=200)
    note = RichTextUploadingField()
    category = models.CharField(max_length=1, choices=EVENT_TYPES, verbose_name=_('Event Category'))
    date_from = models.DateTimeField(auto_now=False, blank=False)
    date_to = models.DateTimeField(auto_now=False, blank=False)
    poster = models.ImageField(upload_to='Programs/', blank=True, max_length=100, width_field=None, height_field=None)
    video = models.URLField(max_length=500, blank=True)
    capacity = models.SmallIntegerField(blank=True)
    venue = GeopositionField(blank=True)

admin.site.register(Event,EventAdmin)

1 个答案:

答案 0 :(得分:0)

因此,似乎不可能恢复数据完好无损的丢失字段。我正在使用MySQL进行项目。所以这是我在尽一切努力挽救之后所做的。 首先,我删除了application / migrations文件夹中的所有迁移。然后我更改了模型中字段的名称。然后,当我运行makemigrations时,它向我显示了“事件中的Alter Field”消息,之后我继续进行迁移。

很高兴告诉您我在运行Ubuntu Server的Amazon EC2实例上。所以我不得不重新启动实例,然后重新加载管理页面。但模型管理员的变化仍然不明显。

然后我不得不停止服务器,并在5分钟后启动它。这改变了公共IP并重新加载网站,我在admin中看到了ImageUpload字段。其余数据完好无损。现在我只需要在相应的事件中重新上传图像。这不是我期望的正确解决方案,但这似乎是可以做到的最好的解决方案。