一个可重用的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

内部字典支持以下键作为设置:

  1. 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上的问题跟踪程序,以了解未来的里程碑和功能。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是安卓的子类。所容纳之物ClipData或ClipData。项目   毕加索中的java错误get()无法应用于(安卓.content.Context)   管道接受来自控制台和管道文本文件的Java输入   Java Windows文件权限   java如何在Selenium中找到此按钮?我尝试了partiallinktext并多次尝试cssSelector   java如何在spring jdbc模板中生成流式sql?   方法中的java全局值变为null   java设备“Mobile Intel(R)4 Series Express芯片组系列”(\\.\DISPLAY1)初始化失败:   java查找单独文件夹中的资源到类文件   java iCal4j添加会议说明   java如何处理InvalidTokenException?   oop如果Java不支持运算符重载,增量运算符如何在整数实例上工作?   java如何在Hibernate中获取<map>