django-formfield
项目描述
- 版本:
0.4
- 文档:
- 下载:
- 来源:
更改日志
- 0.4*
Django 1.9/1.10/1.11 兼容性
清理错误消息
表单中的表单修复
- 0.3
Django 1.6/1.7/1.8 兼容性
Python 3.4 兼容性
表单参数现在可以是动态的
- 0.2
修复 Django 1.5 安装问题
- 0.1.3
修复了表单初始值评估为False时的错误
pep8 相关修复
入门
django-formfield 是一个表单字段,它接受 django 表单作为其第一个参数,并按预期验证和渲染每个表单字段。是的,形式中的形式,梦中的形式?有两种类型的字段可用,FormField和ModelFormField。对于 ModelFormField,数据存储在 json 中。对于FormField,数据只是作为 python 字典返回(form.cleaned_data)
安装
使用pip或easy_install安装很容易。
pip install django-formfield
或者
easy_install django-formfield
添加到已安装的应用程序
INSTALLED_APPS = ( ... 'formfield', ... )
例子
from django.db import models from django import forms from formfield import ModelFormField class PersonMetaForm(forms.Form): age = forms.IntegerField() sex = forms.ChoiceField(choices=((1, 'male'), (2, 'female')), required=False) class Person(models.Model): name = CharField(max_length=200) meta_info = ModelFormField(form=PersonMetaForm)
这将导致这样的事情(使用管理员)
ModelFormField自动设置为null=True , blank=True ,这是因为验证是在内部表单上完成的。结果,如果我们在更改表单上点击保存,您将看到如下内容:
如果我们为有效数据提供更改,您应该在检索数据时获得一个 python 字典:
>>> person = Person.objects.get(pk=1) >>> person.meta_info {u'age': 12, u'sex': u'1'}
表单是唯一强制有效输入的东西,在幕后数据被序列化为 json。因此,在 python 级别上,我们可以提供 meta_info 任何有效的 json::
>>> from sample_app.models import Person >>> data = {'some': 'thing', 'is': 'wrong', 'here': 'help!'} >>> p = Person.objects.create(name="Joan", meta_info=data) >>> p.meta_info {'is': 'wrong', 'some': 'thing', 'here': 'help!'}