表单字段使csv或json文件更容易映射到您自己的模型
django-mapped-fields的Python项目详细描述
django mapped fields
========
一组表单字段,使接受带有变量(但需要)键的半结构化数据变得更容易。现在,这些数据可以直接映射到您自己的django模型和具有规范化字段名的表单。
创建
字段时,只需导入它并设置它的“字段名”。
``python
from django import forms
from mapped\fields import fields
class contact csv(forms.form):
“从csv文件导入联系人。”
“
first\name=fields.charfield(
max\length=50,字段名=('firstname','forename'))
姓氏=字段.charfield(
最大长度=50,字段名=('last name','surname'))
电话号码=字段.charfield(
最大长度=30,字段名=('telephone',“移动”)
def map-u from_csv():
csv-files=[
{
‘名字’:'anne',
‘姓氏’:'other',
‘移动’:'555-1234',
},
‘名字’:'david',
‘法定姓氏’:'anderson',
‘电话’:'555-2345',
},
]
有效的电子表格=contactcsv(数据=csvu文件[0])
有效的电子表格。有效的电子表格。有效的电子表格。被清理的电子表格数据[“名字”]=='安妮'
有效的电子表格。被清理的电子表格数据[“姓姓氏”]=='其他'
有效的电子表格。被清理的电子表格数据[“电话号码”]=='555-1234'='555-1234'='555-1234'=='555-1234'==
无效的电子表格=contactcsv(数据=csv)有效的电子表格。有效的电子表格。有效的电子表格。有效的电子文件[1])
无效的_form.is_valid()==false;合法姓氏不在映射字段中
````
将使用字段名的第一个匹配项:
``来自映射字段的python
”“演示多个字段名。
”“
name=fields.charfield(
max-length=100,field-names=('name','contactname'))
={
“contactname”:“james”,
“name”:“anderson”,
}
form=contactform(data=data)
form.is_valid()==true
form.cleaned_data['name']=“name”name列在字段名称中的第一位
````
如果导入的文件格式不一致,并且如果“最好”的标题不在那里,那么您需要回退。当前支持的字段有:
-`mapped\u fields.fields.booleanfield`
-`mapped\u fields.fields.nullbooleanfield`
-`mapped\u fields.fields.charfield`
-`mapped\u fields.fields.datefields`
-`mapped\u fields.fields.datetimefields`
-`mapped\fields.decimalfields`
-`mapped\u fields.fields.floatfield`
-`映射字段.字段.整数字段`
-`mapped字段.字段.emailfield`
-`mapped字段.字段.slugfield`
-`mapped字段.字段.urlfield`
但是,使用一个强制的额外参数“field\u names”--要从源数据映射到字段的字段名的列表或元组。
testing
----
要测试,请在virtualenv中安装需求,然后在test\u项目中运行test
```
virtualenv
。venv/bin/activate
pip install-r requirements.txt
python setup.py install
./manage.py test
```
========
一组表单字段,使接受带有变量(但需要)键的半结构化数据变得更容易。现在,这些数据可以直接映射到您自己的django模型和具有规范化字段名的表单。
创建
字段时,只需导入它并设置它的“字段名”。
``python
from django import forms
from mapped\fields import fields
class contact csv(forms.form):
“从csv文件导入联系人。”
“
first\name=fields.charfield(
max\length=50,字段名=('firstname','forename'))
姓氏=字段.charfield(
最大长度=50,字段名=('last name','surname'))
电话号码=字段.charfield(
最大长度=30,字段名=('telephone',“移动”)
def map-u from_csv():
csv-files=[
{
‘名字’:'anne',
‘姓氏’:'other',
‘移动’:'555-1234',
},
‘名字’:'david',
‘法定姓氏’:'anderson',
‘电话’:'555-2345',
},
]
有效的电子表格=contactcsv(数据=csvu文件[0])
有效的电子表格。有效的电子表格。有效的电子表格。被清理的电子表格数据[“名字”]=='安妮'
有效的电子表格。被清理的电子表格数据[“姓姓氏”]=='其他'
有效的电子表格。被清理的电子表格数据[“电话号码”]=='555-1234'='555-1234'='555-1234'=='555-1234'==
无效的电子表格=contactcsv(数据=csv)有效的电子表格。有效的电子表格。有效的电子表格。有效的电子文件[1])
无效的_form.is_valid()==false;合法姓氏不在映射字段中
````
将使用字段名的第一个匹配项:
``来自映射字段的python
”“
name=fields.charfield(
max-length=100,field-names=('name','contactname'))
={
“contactname”:“james”,
“name”:“anderson”,
}
form=contactform(data=data)
form.is_valid()==true
form.cleaned_data['name']=“name”name列在字段名称中的第一位
````
如果导入的文件格式不一致,并且如果“最好”的标题不在那里,那么您需要回退。当前支持的字段有:
-`mapped\u fields.fields.booleanfield`
-`mapped\u fields.fields.nullbooleanfield`
-`mapped\u fields.fields.charfield`
-`mapped\u fields.fields.datefields`
-`mapped\u fields.fields.datetimefields`
-`mapped\fields.decimalfields`
-`mapped\u fields.fields.floatfield`
-`映射字段.字段.整数字段`
-`mapped字段.字段.emailfield`
-`mapped字段.字段.slugfield`
-`mapped字段.字段.urlfield`
但是,使用一个强制的额外参数“field\u names”--要从源数据映射到字段的字段名的列表或元组。
testing
----
要测试,请在virtualenv中安装需求,然后在test\u项目中运行test
```
virtualenv
。venv/bin/activate
pip install-r requirements.txt
python setup.py install
```