1

models.py に 4 つのモデルがあります。複数のデータベースを使用しています。追加した別のデータベースにモデルのみを書き込みたい。私はDjangoのドキュメントからデフォルトのルーターを持っています:

   def db_for_write(self, model, **hints):
        """
        Attempts to write fileupload models go to galaxy.
        """
        if model._meta.app_label == 'fileupload': #fileupload=app_name
            return 'galaxy' #database=galaxy
        return None

私のモデル名は GalaxyUser です。この関数を変更して、モデルをデータベースに./manage.py syncdb --database=galaxy書き込むだけにするにはどうすればよいですか。GalaxyUser

4

1 に答える 1

1

allow_syncdbメソッドを定義する必要があります

class GalaxyRouter(object):
    def allow_syncdb(self, db, model):
        if db == 'galaxy':
            return model._meta.app_label == 'fileupload'
        if model._meta.app_label == 'fileupload':
            return db == 'galaxy'
        return None

ルーターがモデルとは別のファイル(など)にあり、次のようにファイルfileupload/routers.pyにインストールされていることを確認します。settings.pyDATABASE_ROUTERS = ['fileupload.routers.GalaxyRouter']

于 2013-01-09T02:27:23.837 に答える