将参数传递给Django Modelform的元类

2024-10-08 21:22:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些模型具有如下公共字段:

class Model_1(models.Model):
    field_1 
    field_2
    field_3
    # Other fields
class Model_2(models.Model):
    field_1 
    field_2
    field_3
    # Other fields

然后我想为他们两个创建一个表单,如下所示:

class CommonForm(forms.ModelForm):
    class Meta:
         variable_of_name_of_model = that pass to Meta class
         # this condition check for 
         if  variable_of_name_of_model == 'Model_1':
             model = Model_1
         elif variable_of_name_of_model == 'Model_2':
             model = Model_2
         fields = ['field_1', 'field_2', 'field_3']

在这个表单中,我检查已传递给Meta类的variable_of_name_of_model 然后做点什么

我该怎么做?另一方面,如何将参数传递给Meta


Tags: ofname模型表单fieldfieldsmodelmodels
1条回答
网友
1楼 · 发布于 2024-10-08 21:22:23

您可以使用一种fabrik方法:

def get_form_class(model_name,data, instance):
    class CommonForm(forms.ModelForm):
        class Meta:
            model = model_name
            fields = ['field_1', 'field_2', 'field_3']
        form = CommonForm(data=data, instance=instance)
        return form

只需在您想使用它的地方使用模型名(视图?)即可。大概是这样的:

form = get_form_class(model_name=ModelName, data=request.POST, instance=instance,)

相关问题 更多 >

    热门问题