提供ajax搜索功能的django应用程序。

django-yaaac的Python项目详细描述


https://coveralls.io/repos/Starou/django-yaaac/badge.pnghttps://img.shields.io/pypi/v/django_yaaac.svgSupported Python versionsLicenseTravis C.I.

yaaac是一个轻量级django应用程序,为外键表单字段提供ajax搜索。

版本3升级警告

这个版本带来了与python 3.6的兼容性和一个小的回归。 默认的suggest_by现在是__str__,而不是__unicode__,所以检查 那Django documentation 迁移代码。

django 2-2和3.2版重要说明

自从django-2.2以来 结果在管理中破坏了这个库。修复方法是embbed jQuery并设置 widgets媒体类中的依赖性,这可能导致其他回归。

自从autocomplete solution 现在是内置的django管理,对该管理的支持已被删除。

安装

从源安装应用程序:

python setup.py build && (sudo) python setup.py install

或者使用pip

pip install django-yaaac

(对于django<;1.8,请使用以前的版本,如pip install django-yaaac==1.9.0

在您的设置中添加应用程序。已安装的应用程序:

INSTALLED_APPS=[...,"django_yaaac",...,]

在项目的urls.py模块中,定义ajax调用的url模式:

fromdjango_yaaac.managerimportautocompletefromdjango.conf.urlsimporturlurlpatterns=[...url(r'^yaaac/',autocomplete.urls),...]

用法

表格

您需要做的是声明一个自定义的modelform

fromdjangoimportformsfromdjango.contribimportadminfromdjango_yaaac.forms.fieldsimportAutocompleteModelChoiceFieldfrom.importmodelsclassBandMemberForm(forms.ModelForm):band=AutocompleteModelChoiceField(site=admin.site,queryset=models.Band.objects.all(),yaaac_opts={"search_fields":["^name"],"suggest_by":"get_full_name","min_chars":3,# Fire search when 3 chars are sent (1 by default.)"max_height":400,# 300px by default."width":250,# 300px by default.},required=True)classMeta:model=models.BandMemberclassMedia:# You need jQuery. Don't forget to call {{ form.media }} in your template.js=('js/jquery.min.js',)admin.site.register(models.BandMember,BandMemberAdmin)

相关查找需要AutocompleteModelChoiceFieldsite参数 放大镜)。search_fields是使用相同语法搜索的字段列表 在Django管理(^,$等)。 额外选项min_charsmax_heightwidthmincharsmaxheightwidth的计数器部分。 在Autocomplete options中。

suggest_by是可选的。它可以是模型的字段或方法。 默认情况下,建议使用\u unicode\uuu方法显示。

如果您的模型定义了一个get_absolute_url()方法,那么标签就是指向该资源的链接。

型号

Yaaac类必须定义以下内容:

  • user_passes_test是接受用户并返回True或False的类方法
  • allows_suggest_by是一个模型字段或方法的列表,可被搜索视图用作返回值。
classBandMember(models.Model):first_name=models.CharField(max_length=100)last_name=models.CharField(max_length=100)band=models.ForeignKey("Band",null=True,blank=True)favorite_instrument=models.ForeignKey("Instrument",null=True,blank=True)classMeta:unique_together=(('first_name','last_name'),)classYaaac:user_passes_test=lambdainstance,user:useranduser.is_authenticated()orFalseallows_suggest_by=['get_full_name']def__unicode__(self):returnu"%s%s"%(self.first_name,self.last_name)defget_full_name(self):returnu"%s%s"%(self.first_name,self.last_name)

调谐

为了简化dom操作,在元素中添加了html类。最有趣的是yaaac_<fieldname> 存储外键值的隐藏输入。当您需要将行为添加到整个 字段集-也就是那些在页面创建时不存在的共享同一名称的字段。

使用jquery委托(即$(".foo").on("change", ".yaaac_first_name"))在一个字段上为所有人放置一个事件 页面中或将要出现的内联表单(即单击“添加新的乐队成员”。)

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

推荐PyPI第三方库


热门话题
安卓中通过TCP发送时java文件损坏   Java测试预期=异常失败,断言错误   java ssh4 LazyInitializationException   java是否可以在集合中添加重复项?   java是一个免费的开源数据库管理工具   java是否可以在导出的html中嵌入图像   编译器构造解释一些东西,并用Java运行生成的字节码?   java KeyPairGenerator未生成随机密钥   java使用正则表达式生成字符串而不是匹配字符串   java中的多线程线程间通信   具有复合密钥的java Hibernate合并问题   java不能在MainActivity类之外使用SharedReferences变量   正在获取切割/零件异常消息。使用java Spring ControllerAdvice   java tomcat漏洞讨论   javascript在Java中实现“system”命令   java如何在JUnit5*中加载*Spring测试上下文之前获取回调?   java bluej关于缺少返回语句   JavaSpringBoot@ModelAttribute包含使用字符串键的其他模型   从可选中抛出异常。ifPresent()Java 8