2017-06-16 20 views
4

私のDjangoアプリケーションでは、特定のユーザー入力によって新しいモデルが作成されます。ここでは、モデルを作成して登録するために使用しているコードを示します。私は、管理者ページの表を参照するためにモデルをクリックするとDjango:実行時に作成された動的モデルを移行する方法

model = type(model_name, (ExistingModel,), attrs) 
admin.site.register(model, admin_options) 

from django.core.urlresolvers import clear_url_caches 
from django.utils.module_loading import import_module 
reload(import_module(settings.ROOT_URLCONF)) 
clear_url_caches() 

これが正常に新しいモデルを作成しますが、しかし、私は次のエラーを取得する:

relation "ExistingModel_NewModel" does not exist

これは通常、新しいことを意味しモデルの変更は移行されていません。 Djangoで動的に作成されたモデルを移行して、対応するデータテーブルを表示するにはどうすればよいですか?

答えて

4

を作成するために助けることができるならば、それはまた、このhttps://code.djangoproject.com/wiki/DynamicModels

import subprocess 
command = 'python manage.py migrate' 
proc = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
stdout, stderr = proc.communicate(command) 

読むに動作します、これを試してみてください。良い答えのための

from django.core.management import call_command 
call_command('makemigrations') 
call_command('migrate') 
2

サブプロセスは、migrateコマンドを使用してモデルを移行できます。だから、それは簡単な解決策は、私のために働いた動的モデル

+0

まず感謝:私は、動的モデルを作成した後、そのようなmakemigrationsmigrate管理コマンドを実行してしまいました!それは私の問題を完全に理解していることを示していますだから私はURLを再ロードする前にこれを一度追加した(登録後)と一度リロードした後に。どちらの場合も、同じエラーが表示されます。私はそれを間違っているのですか? – cookiedough

+0

stdoutとstderr変数の出力をチェックしましたか? –

関連する問題