Django Formfield公司
django-formfield的Python项目详细描述
Version: | 0.4 |
---|---|
Docs: | https://django-formfield.readthedocs.org/en/latest/ |
Download: | http://pypi.python.org/pypi/django-formfield/ |
Source: | https://github.com/jsoa/django-formfield |
更改日志
- 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 form field是一个表单字段,它接受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_信息 任何有效的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!'}
注意
如果表单域通过更改表单(如管理员)可用,则
意外值将被窗体返回的内容覆盖。例如,
^上面的{age
和sex
,所以上面的值都不是
('is'、'some'和'here')匹配,并将在表单提交时被重写。
但是,我们可以将字段隐藏或只读,并使用它来提供任何 有效的json,但它并不是这个应用的真正内涵。