2017-05-03 12 views
1

イベントをリストするdjangoアプリケーションに既存のイベントモデルがあります。イベントには、関連するポスターを格納するためにmodels.ImageFieldを使用していたポスターフィールドがあります。イベントのアップロードは管理者からのみ制御されていたため、アップロードは公開されていません。データベースには約50件のイベントがあり、うまくいきました。 イメージが重くなっているので、私はsorl.thumnailをdjangoに追加しようとしました。私のmodels.pyファイルで、sorl.thumbnailsからImageFieldをインポートし、それをポスターフィールドに追加しました。偶然削除後のDjangoモデルフィールドの復元

私はmakemigrationsを実行したときに 'alter field poster'と報告しました。その後、移行を実行し、再読み込み時に管理者の[ポスター]フィールドが表示されません。 既存のイベントでさえ、ポスターフィールドを失ってしまい、画像もテンプレートに表示することはできません。

変更を元に戻して移行を再実行しましたが、ポスターフィールドはまだ表示されません。モデルを復元して既存のポスター画像に再接続する方法はありますか? 私はpython 3.5とdjango 1.11を使用しています。他のすべては正常に動作しますが、これはもう少し速度を上げるための愚かなミスのようです。

ご意見ありがとうございます。ここで

は私のイベントモデルが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.pyだから、単にレジスタ機能

class EventAdmin(admin.ModelAdmin): 
list_display = ('title', 'date', 'venue', 'category') 

admin.site.register(イベント、EventAdmin)

+0

データベースにはポスターデータがありますか?もしそうでなければ、それらを取り戻すことはできません。既にデータベースから削除されているものです – Exprator

+0

アップロードされたファイルを見ることができます。 djangoの管理領域には、もうポスターのフィールドがありません。私は、初期状態にmodels.pyを復元しようとしていて、マイグレーションを実行していますが、それでもポスターフィールドは戻っていません。私はイベントモデル定義 –

+0

を追加しました。admi.pyのコードを表示して、あなたが実際に必要としているものと実際に必要なものを教えてください。 – Exprator

答えて

0

で、それはdoesnのように見えるものですデータが損なわれていなくても失われたフィールドを回復する可能性は高いです。私はこのプロジェクトにMySQLを使用しています。それでは、私がそれを救済するために可能な限り努力した後に行ったことがここにあります。 最初に、applications/migrationsフォルダ内のすべての移行を削除しました。その後、モデルのフィールドの名前を変更しました。そして、私がマカマイギュレーションを実行したとき、それは私に、「イベントでのフィールドの変更」というメッセージを示しました。その後、マイグレーションを進めました。

私はUbuntu Serverを実行しているAmazon EC2インスタンス上にいることを伝えておきます。だから私はインスタンスを再起動して、管理ページをリロードする必要がありました。しかし、モデル管理者の変更はまだ目に見えませんでした。

その後、サーバーを停止して5分後に起動しなければなりませんでした。これによりパブリックIPが変更され、サイトをリロードする際にadminのImageUploadフィールドが表示されました。残りのデータはそのまま残っていた。今度は、それぞれのイベントで画像を再アップロードするだけです。これは私が期待していた適切な解決策ではありませんが、これは実行可能な最良のようです。

+0

更新いただきありがとうございます。 [解かれた]デバイスなどをタイトルに追加する必要はありませんが、ここではそうしません。この回答が最も満足のいく解決策であることが判明した場合は、必要に応じて隣接する目盛アイコンをクリックして自己受け入れを行うことができます。 – halfer

関連する問題