Skip to main content
 首页 » 编程设计

python之动态更新ModelForm的Meta类模型字段

2025年05月04日12jyk

def SiteAdminForm(model_cls, *args, **kwargs): 
    class MerchantAdminForm(forms.ModelForm): 
        class Meta: 
            exclude = ('external_links', 'published', 'logo','image_zip_file',) 
            model = model_cls 
 
        def __init__(self, *args, **kwargs): 
            super(MerchantAdminForm, self).__init__(*args, **kwargs) 
 
    return MerchantAdminForm() 
 
# In use... 
merchant_form = SiteAdminForm(merchant.__class__, instance=merchant) 

无论将什么传递到 model_cls,模型总是被忽略。

Meta.exclude设置正确,如何动态更新Meta.model?

请您参考如下方法:

def get_form(model_class): 
    class DynamoForm(forms.ModelForm): 
        class Meta: 
            model = model_class 
 
    return DynamoForm 
 
 
form_set = get_form(ActualModel)(request.POST) 

这是你想要的吗?