【发布时间】:2012-05-04 06:44:47
【问题描述】:
我们有一个包含 models.py 的应用程序,其中包含 n 个编号。继承基类的类。我们希望创建从用户 n 保存在 db 中的动态获取值的表单,但问题是我们想使用 django 表单字段而不是 django 模型表单。
我们知道 django 表单中缺少一些字段,例如 PositiveIntegerField、CommaSeparetedIntegerFields 等。我们如何使用 django 表单字段来实现这一点?
如果我们在 shell 中编写以下代码。
from djnago.db import models
mvar = models.PositiveIntegerFields()
from django import forms
fvar = forms.PositiveIntegerFields()
AttributeError: 'module' object has no attribute 'PositiveIntegerField'
forms.py
from django import forms
class ContextForm(forms.Form):
def __init__(self, rdict, *args, **kwargs):
super(ContextForm, self).__init__(*args, **kwargs)
for key in rdict.keys():
self.fields['%s' % str(key)] = getattr(forms,rdict.get(key))()
rdict = {'address': 'CharField','phone': 'CharField', 'Salary': 'PositiveIntegerField','first name': 'CharField','last name':'CharField'}
【问题讨论】:
-
你为什么不使用
ModelForm并坚持使用标准表格?尽管ModelForm已经为您提供了所有您想要的东西,但您必须有充分的理由不使用它。 -
我们可以动态创建ModelForm吗???
-
Form和ModelForm都继承自BaseForm类,因此具有相似的结构。基本区别在于,您使用Form定义自己的表单,而ModelForm使用您的Model创建表单
标签: django django-models django-forms