Django窗体字段动态子类化

2024-09-21 07:53:23 发布

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

我正在尝试开发一种机制来动态创建一组Django表单字段。你知道吗

在实验中,我遇到了奇怪的行为,我想知道,是否值得担心。你知道吗

代码如下:

In [139]: from django import forms

In [140]: MyFieldDynamic = type('MyFieldDynamic', (forms.CharField,), {})

In [141]:   1 class MyField(forms.CharField):
            2     pass

In [142]: MyFieldDynamic.mro()
Out[142]: 
[django.utils.deprecation.MyFieldDynamic,
 django.forms.fields.CharField,
 django.forms.fields.Field,
 object]

In [143]: MyField.mro()
Out[143]: 
[__main__.MyField,
 django.forms.fields.CharField,
 django.forms.fields.Field,
 object]

如您所见,如果类是使用type创建的,那么它的第一个超类就是django.utils.deprecation.MyFieldDynamic。这东西怎么了?你知道吗

还有一个更宽泛的问题——我想做的是在运行时创建表单字段,这有可能吗?也许有一些资源,我跳过了?你知道吗

编辑:

Python:

2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]

Django公司:

(1, 8, 3, 'final', 0)

Tags: djangoinfieldfieldstypeformsutilsout

热门问题