Python 3.x 在Python 3中的类中动态创建内部类?

Python 3.x 在Python 3中的类中动态创建内部类?,python-3.x,django-models,Python 3.x,Django Models,为了自动化Django API,我希望动态生成ModelSerializer类,例如: class AppleSerializer(serializers.ModelSerializer): class Meta: model = Apple fields = '__all__' class BananaSerializer(serializers.ModelSerializer): class Meta: model = Ban

为了自动化Django API,我希望动态生成ModelSerializer类,例如:

class AppleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Apple
        fields = '__all__'

class BananaSerializer(serializers.ModelSerializer):
    class Meta:
        model = Banana
        fields = '__all__'
创建一个常规类相当简单(见下文)。如何动态地创建内部元类呢

for serialmodel in ['Apple', 'Banaba']:
        class_name = serialmodel + 'Serializer'
        globals()[class_name] = type(class_name, (serializers.ModelSerializer,), {})
找到了答案:

for serialmodel in ['Apple', 'Banana']:
        class_name = serialmodel + 'Serializer'
        Meta = type('Meta', (object, ), {'model': globals()[serialmodel], 'fields': '__all__'})
        globals()[class_name] = type(class_name, (serializers.ModelSerializer,), {'Meta':Meta, })
如果您在Django中有很多通用模型,则非常有用:)

或者,如果要自动对所有模型执行此操作:

models = dict(apps.all_models['your_django_app'])
for name, model in models.items():
    class_name = name[:1].upper() + name[1:] + 'Serializer'
    Meta = type('Meta', (object, ), {'model': model, 'fields': '__all__'})
    globals()[class_name] = type(class_name, (serializers.ModelSerializer,), {'Meta':Meta, })
它不起作用<代码>类型('Meta',(object,),{'model':模型,'fields':'\uuuuu all\uuuuuuuuuu})失败,出现错误:
KeyError:'\uuuu模块