2017-06-15 7 views
0

に基づいてクラスを作成するために形成します。ジャンゴ - 私は抽象モデルとそれを継承するサブクラスの負荷を持っているタイプ

私は、これらのサブクラスのリストを取得することができますが、私は、ユーザーがそれらのいずれかを作成することを選択できるように、フォームでそれらを置くことについてどのように行きますか?

ので、例えば: -

class Abstract(models.Model): 
    class Meta: 
     abstract = True 

class ImplA(Abstract): 
    pass 

class ImplB(Abstract): 
    pass 

私はImplAのインスタンスまたはImplBのインスタンスのいずれかを作成することを選択するためにユーザを可能にフォームを必要としています。

+0

モデルごとに別々のフォームを作成することはありますか? – xyres

+0

したがって、あなたは、ユーザーがデータベース列を選択して作成するようにしますか? – Amar

+0

@xyresそれはうまくいくかもしれませんが、新しいImplをコードに追加するたびに新しいフォームを作成する必要はありません。 – bodger

答えて

0

あなたは、まずあなたが今USERTABLEからデータを取得し、動的に

models.py以下のようなクラスを生成することができ、ユーザ入力に

SUBCLASSCHOICE = (
    ('ImplA', 'ImplA'), 
    ('ImplB', 'ImplB'), 
) 
class UserTable(models.Model): 
    abstract_class = models.CharField() 
    sub_class = models.CharField(choices=SUBCLASSCHOICE) 

を保存するためのモデルを作成

以下のようにこれを実装することができます user_table = UserTable.objects.get()

local()[user_table.sub_class] = type(
    user_table.sub_class, #model class name 
    (user_table.abstract_class ,), 
) 
+0

この回答の形式はどこですか? – bodger

関連する問題