django - 如何做一个实时搜索表单 ModelChoiceField
问题描述
如何在模板 html 中的 ModelChoiceField 表单中进行实时搜索...例如我写了一个数字,ai 将只获得具有该数字的数据,我正在使用 django 1.9
模型.py
class Suivre(models.Model):
formationffF=models.ForeignKey(FormationDispo,on_delete=models.CASCADE)
numcniF=models.ForeignKey(Personne,on_delete=models.CASCADE)
session = models.CharField(max_length=50)
表格.py
class Ajout3 (forms.Form):
numcniF=forms.ModelChoiceField(queryset=Personne.objects.all().order_by('-time'))
formationf =forms.ModelChoiceField(queryset=FormationDispo.objects.all().order_by('time') )
session = forms.CharField(required=True, widget=forms.TextInput())
模板.html
<form method="post">
{% load crispy_forms_tags %}
{% csrf_token %}
{{con|crispy}}
<button type="submit" class="btn btn-success" > SAVE</button>
</form>
解决方案
我建议你使用django-admin和ajax_select
在您的应用程序中创建一个名为 admin.py 的文件。
管理员.py
from django.contrib import admin
from myproject.myapp.models import Suivre
from ajax_select import make_ajax_form
# creates model-centric interface where trusted users can manage content on your site.
class SuivreAdmin(admin.ModelAdmin):
model = Suivre
form = make_ajax_form(
Suivre,
{
'numcniF': 'all_personne', # ForeignKeyField
'formationf':'all_formationdispo'
})
# registers admin
admin.site.register(Suivre, SuivreAdmin)
请注意,我正在使用ajax_select库,它将创建如下图所示的界面。
安装 ajax_select:
pip install django-ajax-selects
添加应用程序:
设置.py
# settings.py
INSTALLED_APPS = (
...
'ajax_select', # <- add the app
...
)
AJAX_LOOKUP_CHANNELS = {
'all_formationdispo': {
'model': 'app.FormationDispo',
'search_field': 'name'
},
'all_personne': {
'model': 'app. Personne',
'search_field': 'name'
},
}
在您的项目中包含网址:
网址.py
# urls.py
from django.conf.urls import url, include
from django.conf.urls.static import static
from django.contrib import admin
from django.conf import settings
from ajax_select import urls as ajax_select_urls
admin.autodiscover()
urlpatterns = [
# place it at whatever base url you like
url(r'^ajax_select/', include(ajax_select_urls)),
推荐阅读
- excel - 如何以文本格式管理以秒为单位的时间?
- android - 在 Maps Fragment 的边框中添加圆角并删除 Fragment 背景
- strapi - Strapi API:用于搜索的 curl 示例
- dataframe - 在 pyspark 中,我想将值的数据帧列传递给函数并在该数据列中操作说,第 5 个值
- entity-framework - ef 核心导航属性无法加载
- c# - 映射子集合
- airflow-scheduler - Airflow dag 的任务休眠,调度器停止执行其他 dag
- python - 对于 python 中的 mqtt,msg.payload.split 失败。怎么修?
- google-data-studio - Google datastudio 动态更改报告过滤器
- java - 在我的设备上运行的应用程序与预览不同