Python Django编写一个get_form()函数

Python Django编写一个get_form()函数,python,django,forms,django-forms,django-views,Python,Django,Forms,Django Forms,Django Views,我有一个基于模型动态创建模型表单的应用程序。这些表单必须动态加载到模板上。 我需要在我的视图中编写一个函数,从forms.py获取所有表单,或者通过名称获取特定表单。类似于get_models(appName)和get_model(appName,modelName)的东西,但用于表单而不是模型 我该怎么写,该在哪里写? 在登记处、表格或其他地方 这是我的密码: Models.py class PrimaryInfo(models.Model): Name = models.CharF

我有一个基于模型动态创建模型表单的应用程序。这些表单必须动态加载到模板上。
我需要在我的视图中编写一个函数,从forms.py获取所有表单,或者通过名称获取特定表单。类似于get_models(appName)和get_model(appName,modelName)的东西,但用于表单而不是模型

我该怎么写,该在哪里写? 在登记处、表格或其他地方

这是我的密码:

Models.py
 class PrimaryInfo(models.Model):
    Name = models.CharField(max_length=200, blank=False, null=True) #required. Must be filled by user
    Surname = models.CharField(max_length=200, blank=False, null=True)
    DateOfBirth = models.DateField('date of birth', blank=False, null=True)
    <Some Other fields>
    ...
    def calculateAge(self):
        if not self.DateOfBirth is None:
            thisYear = timezone.now().date().year
            return thisYear - self.DateOfBirth.year
        pass
    <some other functions>
    ...
#Here come all the related tables
class Jobs(models.Model):
    Rel = models.ForeignKey(PrimaryInfo, on_delete=models.CASCADE)
    Job = models.CharField(max_length=200)
    Age = models.IntegerField(default=0)
    Country = models.CharField(max_length=200)
    def __str__(self):
        return self.Job
<some other related models>
....
def detail(request, personId):
    appName = urls.app_name
    tablesPrefix = appName + '_'
    person = PrimaryInfo.objects.get(pk = personId)
    peopledbModels = apps.get_models(appName)
    fieldsList = []
    relatedModels = []
    relationshipsDic = {}
    formsFileName = "write.py"
    parentModelForms = []
    # identify which models are parent and which ones are relationships. makes a dictionary (Of string, list) for the results.
    for m in peopledbModels:
        if m._meta.db_table.startswith(appName):
            fields = m._meta.get_fields()
            for fld in fields:
                if fld.is_relation:
                    if fld.many_to_one or fld.many_to_many or fld.one_to_one:
                        pass
                    else:
                        relatedModels.append(fld.name)
                        relationshipsDic["{}".format(m._meta.label).replace("{}.".format(appName),"")] = relatedModels
    #Write the modelForm from parent model into forms.py
    for pmdl in relationshipsDic.keys():
        parentModelName = pmdl
        modelFormExist = False
        with open("{}{}/{}".format(djangoSettings.MEDIA_ROOT, appName, formsFileName)) as file:
            if "class {}Form(forms.ModelForm):".format(parentModelName) in file.read():
                file.close()
                modelFormExist = True
        if modelFormExist == False:
            with open("{}{}/{}".format(djangoSettings.MEDIA_ROOT, appName, formsFileName), "a+") as file:
                file.write("\n\nclass {0}Form(forms.ModelForm):\n\tclass Meta:\n\t\tmodel = {0}\n\t\tfields = '__all__'".format(parentModelName))
                file.close()
        parentModel =  apps.get_model(appName, pmdl) 
        instance = get_object_or_404(parentModel, pk=personId) 
        parentModelForm = "{}Form".format(pmdl) #this is where I need to get the form object with a variable name from forms.py
        parentModelForm = parentModelForm(instance = instance) #this is not working (string object is not callable)
        parentModelForms.append(parentModelForm) 
   <then pass this list of models to the template>
...
class PrimaryInfoForm(forms.ModelForm):
    class Meta:
        model = PrimaryInfo
        fields = '__all__'

class JobsForm(forms.ModelForm):
    class Meta:
        model = Jobs
        fields = '__all__'