Django-基于类型创建类的表单

Django-基于类型创建类的表单,django,django-models,django-forms,Django,Django Models,Django Forms,我有一个抽象模型和一堆从中继承的子类 我可以得到这些子类的列表,但是我如何将它们放入表单中,以便用户可以选择创建其中一个 例如:- class Abstract(models.Model): class Meta: abstract = True class ImplA(Abstract): pass class ImplB(Abstract): pass 我需要一个表单,使用户可以选择创建ImplA实例或IMLB实例。您可以按如下方式实现此功能 首

我有一个抽象模型和一堆从中继承的子类

我可以得到这些子类的列表,但是我如何将它们放入表单中,以便用户可以选择创建其中一个

例如:-

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

class ImplA(Abstract):
    pass

class ImplB(Abstract):
    pass

我需要一个表单,使用户可以选择创建ImplA实例或IMLB实例。

您可以按如下方式实现此功能

首先创建一个模型来保存用户输入

SUBCLASSCHOICE = (
   ('ImplA', 'ImplA'),
   ('ImplB', 'ImplB'),
)
class UserTable(models.Model):
   abstract_class = models.CharField()
   sub_class = models.CharField(choices=SUBCLASSCHOICE)
您现在可以从UserTable获取数据并动态生成类,如下所示

models.py user\u table=UserTable.objects.get()


可能会为每个模型创建单独的表单?因此您希望用户选择并创建数据库列?@xyres这可能会起作用-但我不希望每次向代码中添加新的Impl时都必须创建新表单。@Amar不,我希望用户能够选择要创建的对象类型。@bodger这些模型对象是什么?如果是这样,则表示您正在为用户提供创建数据库列的选项。此答案中的表单是什么?
local()[user_table.sub_class] = type(
    user_table.sub_class, #model class name
    (user_table.abstract_class ,),
)