分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

Django - Form嵌套的Meta类 + 为什么type()能创建类

发布时间:2023-09-06 02:11责任编辑:彭小芳关键词:暂无标签

Form里面嵌套了一个Meta类

class PostForm(forms.ModelForm): ???class Meta: ???????model = Post ???????# field to be exposed ???????fields = (‘title‘, ‘text‘)

Django是怎么处理的?

在models.py中

def modelform_factory(model, form=ModelForm, fields=None, exclude=None, ?????????????????????formfield_callback=None, widgets=None, localized_fields=None, ?????????????????????labels=None, help_texts=None, error_messages=None, ?????????????????????field_classes=None): ???""" ???Return a ModelForm containing form fields for the given model. ???"""

看这个源码得知,用反射获取class Meta,然后用type()去创建新的表单类。type()用了两次,第一次用来创建base form, 第二次用base form来创建带有新增属性的form。

为什么type能创建类?

# 从modelform_factory源码中可以看到return type(form)(class_name, (form,), form_class_attrs)

因为type()返回的是class,再用class去创建

Django - Form嵌套的Meta类 + 为什么type()能创建类

原文地址:https://www.cnblogs.com/allen2333/p/9532898.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved