2016-08-12 4 views
0

a Heroku Python app with a Postgres dbのチュートリアルを正常終了した後、既存のモデルとそのテーブルの機能とファイルをコピーして貼り付けることで、既存のコードに基づいてHerokuアプリケーションで新しいモデルを作成しました。 しかし、私は実際にHerokuがPostgresのテーブルをリモートで作成させることができませんでした。いくつかの試行錯誤の末、私は以下の答えを見つけました。PythonでリモートのHeroku PostgresにHeroku Djangoアプリケーションの新しいモデルテーブルを追加するには?

セットアップ:Heroku Pythonはローカルでリモートで実行されており、Heroku Postgresはリモートでのみ実行されています。

答えて

1

チュートリアルで使用されていたheroku run python manage.py migrateを実行して、リモートのHeroku Postgresデータベースに実際に新しいテーブルを作成したかったのです。しかし、それはバットからすぐには機能しませんでした。私がする必要があったのは、いくつかのPythonファイルをセットアップし、最後にそのコマンドを実行することでした。

これは、新しいフィールドの追加など、モデルを編集する場合にも機能します。

私が追加されたすべてのファイルがthis tutorial

に基づいてHeroku tutorial's codeにしているこれは私がやったまさにです:hello/models.py

  1. class Mytable(models.Model): 
        when = models.DateTimeField('date created', auto_now_add=True) 
    
  2. はPythonが生成してみましょう追加0002_mytable.py私のローカルhello/migrationsのファイルをMacで次のコマンドを実行してください(virtualenvのHerokuのにしてログインした)ターミナル:

    python manage.py makemigrations hello 
    

    と私は、この応答得た:

    Migrations for 'hello': 
        0002_mytable.py: 
        - Create model Mytable 
    
  3. を私のリモートHerokuの

    git add hello/migrations/0002_mytable.py 
    git commit -am "added new migration file" 
    git push heroku master 
    
  4. にこの新しいマイグレーションファイルを追加します。

    HerokuはリモートのHeroku Postgresでテーブルをリモート作成します。

    heroku run python manage.py migrate 
    

    あなたは見るべき

    Running python manage.py migrate on ⬢ your-heroku-url... up, run.1699 
    Operations to perform: 
        Apply all migrations: admin, contenttypes, hello, sessions, auth 
    Running migrations: 
        Rendering model states... DONE 
        Applying hello.0002_mytable... OK 
    
関連する問題