Django窗体,支持使用启用标记的Select2输入的新项
django-select2-tags的Python项目详细描述
django-select2-tags提供一个表单类和表单字段来处理存储新的django模型 使用启用标记的Select2字段创建的值。目前这是一个粗略的计划; 它不能很好地处理所需字段,表单验证也不能将标记还原到输入。它可能 仍然帮助你,拉请求是受欢迎的!
使用Django1.10在Python2.7和3.5上测试。
喜欢我的工作?给我小费!https://www.paypal.me/jessamynsmith
安装
开发版本可以安装:
pip install -e git://github.com/jessamynsmith/django-select2-tags.git#egg=django-select2-tags
如果您是在本地开发,则可以从 工作目录:
python setup.py.install
用法
使用django-select2-tags的最简单方法是 select2_tags.forms.Select2ModelChoiceField和 select2_tags.forms.Select2ModelMultipleChoiceField在的模型窗体中 django.db.models.ForeignKey和 django.db.models.ManyToManyField分别是模型字段。这些字段扩展 它们的django等价物并接受相同的参数,以及所需的value_field 参数和可选的save_new关键字参数。目前,这只适用于 可为空的模型字段,并且必须将required=False传递给选项字段。
如果使用select2_tags.forms.Select2ModelForm代替常规的modelform并设置 save_new=true在任何select2选项字段中,新值都将为您保存。
提供以下型号:
class MyRelatedModel(models.Model): name = models.CharField(max_length=20) class MyModel(models.Model): my_fk_field = models.ForeignKey(MyRelatedModel, null=True, blank=True) my_m2m_field = models.ManyToManyField(MyRelatedModel)
您可以创建以下表单以自动保存select2标记值:
from select2_tags import forms class MyFkForm(forms.Select2ModelForm): class Meta: model = MyModel exclude = [] my_fk_field = forms.Select2ModelChoiceField( 'name', queryset=test_models.MyRelatedModel.objects.all(), required=False) my_m2m_field = forms.Select2ModelMultipleChoiceField( 'name', queryset=test_models.MyRelatedModel.objects.all(), required=False)
您将能够在编辑页上输入新值并将其保存到数据库中, 只要select2设置为已启用标记:
$("#id_my_fk_field").select2({ tags: true });
开发
在github上派生项目,git克隆您的fork,例如:
git clone https://github.com/<username>/django-select2-tags.git
创建一个virtualenv并安装依赖项:
mkvirtualenv django-select2-tags pip install -r requirements/package.txt -r requirements/test.txt
运行覆盖率为100%的测试并检查代码样式:
coverage run manage.py test coverage report -m flake8
验证所有受支持的python版本:
pip install tox tox
安装本地副本:
python setup.py install