sql >> データベース >  >> RDS >> Mysql

単一のDjangoモデル、複数のテーブル?

    動的な db_table 。

    def getModel(db_table):
      class MyClass(models.Model):
         # define as usual ...
         class Meta:
           db_table = db_table
    
      return MyClass
    
    newClass = getModel('29345794_table')
    newClass.objects.filter( ...
    

    編集:Djangoはクラスの_metaの新しいインスタンスを作成しません この関数が呼び出されるたびに属性。 _metaの新しいインスタンスを作成する クラスの名前に依存します(Djangoはそれをどこかにキャッシュする必要があります)。メタクラスを使用して、実行時にクラスの名前を変更できます。

    def getModel(db_table):
      class MyClassMetaclass(models.base.ModelBase):
        def __new__(cls, name, bases, attrs):
          name += db_table
          return models.base.ModelBase.__new__(cls, name, bases, attrs)
    
      class MyClass(models.Model):
        __metaclass__ = MyClassMetaclass
    
        class Meta:
          db_table = db_table
    
      return MyClass
    

    定義済みのクラスに動的に設定できるかどうかわからない。私はこれを自分でやったことはありませんが、うまくいくかもしれません。

    これはいつでも設定できます。

    >>> MyModel._meta.db_table = '10293847_table'
    >>> MyModel.objects.all()
    


    1. Liquibase / PostgreSQL:テーブルケースを正しく保存する方法は?

    2. SQLテーブルからのブートストラップドロップダウンへのアイテムの挿入

    3. Access2016でフォームにルックアップコントロールを追加する方法

    4. 2つのフィールドに「両面」の一意のインデックスを作成するにはどうすればよいですか?