Dynamically update ModelForm's Meta class

前端 未结 4 1065
执笔经年
执笔经年 2020-12-07 10:08

I am hoping to dynamically update a ModelForm\'s inline Meta class from my view. Although this code seems to update the exclude list in the Meta class, the output from

4条回答
  •  一整个雨季
    2020-12-07 10:44

    Similar approach, somewhat different goal (generic ModelForm for arbitrary models):

    from django.contrib.admin.widgets import AdminDateWidget
    from django.forms import ModelForm
    from django.db import models
    
    def ModelFormFactory(some_model, *args, **kwargs):
        """
        Create a ModelForm for some_model
        """
        widdict = {}
        # set some widgets for special fields
        for field in some_model._meta.local_fields:
            if type(field) is models.DateField:
                widdict[field.name] = AdminDateWidget()
    
        class MyModelForm(ModelForm): # I use my personal BaseModelForm as parent
            class Meta:
                model = some_model
                widgets = widdict
    
        return MyModelForm(*args, **kwargs)
    

提交回复
热议问题