一个可重用的django应用程序,允许将模型的某些字段标记为masterdata。用户仍然可以输入自己的值,但应用程序会将它们映射到唯一实例。管理员可以查看所有用户生成的条目并将其标记为已批准。
django-crowdsourced-fields的Python项目详细描述
一个可重用的django应用程序,允许将模型的某些字段标记为 主数据。用户仍然可以输入自己的值,但是应用程序 将它们映射到唯一实例。管理员可以查看所有用户 生成条目并将其标记为已批准。
例如,一个车辆站点,您希望允许用户 输入他们车辆的品牌和型号,但要确保 “BMW”和“BMW”的输入结果是“BMW”。
该应用程序还为此类字段提供了一个不错的jquery组合框,用户可以在其中 输入时自动提示。
安装
要使用此应用程序,您需要安装以下先决条件:
pip install Django pip install South
如果要安装pypi的最新稳定版本:
$ pip install django-crowdsourced-fields
如果您有冒险精神并希望安装来自github的最新提交:
$ pip install -e git://github.com/bitmazk/django-crowdsourced-fields.git#egg=crowdsourced_fields
将crowdsourced_fields添加到INSTALLED_APPS:
INSTALLED_APPS = ( ..., 'crowdsourced_fields', )
不要忘记迁移数据库:
./manage.py migrate crowdsourced_fields
将jquery和jquery ui添加到基本模板或至少添加到 应显示具有众包字段的表单。还包括jquery ui 此应用程序提供的样式和特殊样式:
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/flick/jquery-ui.css"> {{ form.media.css }} <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.min.js"></script> {{ form.media.js }}
您可能希望在基本模板中包含jquery和jquery ui部分 并且模板中的{{ form.media }}部分只使用 众包领域。
用法
准备好您的模型
首先,您需要修改应该具有众包字段的模型:
from crowdsourced_fields.models import CrowdSourcedModelMixin class YourModel(CrowdsourcedModelMixin, models.Model): CROWDSOURCED_FIELDS = { 'make': {'item_type': 'makes', } 'model': {'item_type': 'models', } } make = models.CharField(...) model = models.CharField(...)
CROWDSOURCED_FIELDS是一本词典。主要的钥匙是 应该众包的领域。这必须是CharFields。
内部字典支持以下键作为设置:
- item_type(必需):数据所在的组的名称 此字段应分组。假设你有两个模型 一个字段country,它应该可以访问相同的数据。通过给予 对于两个模型上的字段,它们将使用相同的item_type。 众包数据集。
对于所选的每个字段,MIXIN将动态添加方法。 对模型调用了fieldname_crowdsourced。因此,我们将拯救这两个国家, 用户实际输入的值(在原始字段中)和指向的链接 我们通过此应用程序维护的唯一且经批准的价值。
对于您的员工用户,更改 CrowdsourcedItem对象。既然你应该在模板中使用它们, 任何拼写错误的修复都将立即反映在您的网站上,而无需 数据迁移。
创建模型窗体
接下来,您将使用众包字段为模型创建一个ModelForm:
from django import forms from crowdsourced_fields.forms import CrowdsourcedFieldsFormMixin from your_app.models import YourModel class YourModelForm(CrowdsourcedFieldsFormMixin, forms.ModelForm): class Meta: model = YourModel
CrowdsourcedFieldsFormMixin将为您带来魔力并添加replace 具有已存在的组合框的原始表单字段(文本输入) 准备好自动建议的值。
创建模板
如上所述,首先确保jquery、jquery ui和表单的媒体 在您的模板中可用。
之后,您可以启动如下组合框:
$(document).ready(function(){ $('#id_country').combobox({ source: {{ form.country_crowdsourced_values|safe }} }); });
在本例中,country将是表单字段的名称。
贡献
如果您想参与此项目,请执行以下步骤:
# Fork this repository # Clone your fork $ mkvirtualenv -p python2.7 django-crowdsourced-fields $ pip install -r requirements.txt $ ./online_docs/tests/runtests.sh # You should get no failing tests $ git co -b feature_branch master # Implement your feature and tests $ ./crowdsourced_fields/tests/runtests.sh # You should still get no failing tests # Describe your change in the CHANGELOG.txt $ git add . && git commit $ git push origin feature_branch # Send us a pull request for your feature branch
无论何时运行测试,都会在 tests/coverage/index.html。添加新功能时,请确保 你把保险范围保持在100%。
如果您正在进行需要在浏览器中测试的更改(即 css或js文件),您可能希望设置django项目,请按照 安装说明,然后运行python setup.py develop。这 只需在项目的virtualenv中放置一个到克隆叉的鸡蛋链接。
路线图
查看github上的问题跟踪程序,以了解未来的里程碑和功能。